Blame test/subi18n.awk

Packit 575503
# Date: Mon, 27 Feb 2006 12:35:30 +0900
Packit 575503
# From: KIMURA Koichi <kimura.koichi@canon.co.jp>
Packit 575503
# Subject: gawk: sub_common has multi-byte aware bug
Packit 575503
# To: bug-gawk@gnu.org
Packit 575503
# Message-id: <20060227121045.2198.KIMURA.KOICHI@canon.co.jp>
Packit 575503
# 
Packit 575503
# Hi,
Packit 575503
# 
Packit 575503
# A certain user faced bug of sub builtin function and report to me.
Packit 575503
# Then I investigated the bug.
Packit 575503
# 
Packit 575503
# reproduce script is here.
Packit 575503
Packit 575503
BEGIN {
Packit 575503
	str = "type=\"directory\" version=\"1.0\""
Packit 575503
	#print "BEGIN:", str
Packit 575503
Packit 575503
	while (str) {
Packit 575503
		sub(/^[^=]*/, "", str);
Packit 575503
		s = substr(str, 2)
Packit 575503
		print s
Packit 575503
		sub(/^="[^"]*"/, "", str)
Packit 575503
		sub(/^[ \t]*/, "", str)
Packit 575503
	}
Packit 575503
}
Packit 575503
Packit 575503
# and sample result is here (on GNU/Linux Fedora core 3)
Packit 575503
# 
Packit 575503
# [kbk@skuld gawk-3.1.5]$ LC_ALL=C ./gawk -f subbug.awk
Packit 575503
# "directory" version="1.0"
Packit 575503
# "1.0"
Packit 575503
# [kbk@skuld gawk-3.1.5]$ LC_ALL=en_US.UTF-8 ./gawk -f subbug.awk
Packit 575503
# "directory" version="1.0"
Packit 575503
# "dire
Packit 575503
# [kbk@skuld gawk-3.1.5]$
Packit 575503
# 
Packit 575503
# In my investigation, this bug is cause by don't release wide-string when
Packit 575503
# sub is executed.
Packit 575503
# 
Packit 575503
# patch is here.
Packit 575503
# 
Packit 575503
# --- builtin.c.orig	2005-07-27 03:07:43.000000000 +0900
Packit 575503
# +++ builtin.c	2006-02-26 02:07:52.000000000 +0900
Packit 575503
# @@ -2463,6 +2468,15 @@ sub_common(NODE *tree, long how_many, in
Packit 575503
#  	t->stptr = buf;
Packit 575503
#  	t->stlen = textlen;
Packit 575503
# 
Packit 575503
# +#ifdef MBS_SUPPORT
Packit 575503
# +    if (t->flags & WSTRCUR) {
Packit 575503
# +        if (t->wstptr != NULL)
Packit 575503
# +            free(t->wstptr);
Packit 575503
# +        t->wstptr = NULL;
Packit 575503
# +        t->wstlen = 0;
Packit 575503
# +        t->flags &= ~WSTRCUR;
Packit 575503
# +    }
Packit 575503
# +#endif
Packit 575503
#  	free_temp(s);
Packit 575503
#  	if (matches > 0 && lhs) {
Packit 575503
#  		if (priv) {
Packit 575503
# 
Packit 575503
# 
Packit 575503
# -- 
Packit 575503
# KIMURA Koichi
Packit 575503
# 
Packit 575503
# 
Packit 575503
# #####################################################################################
Packit 575503
# This Mail Was Scanned by 012.net AntiVirus Service1- Powered by TrendMicro Interscan
Packit 575503
#