|
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 |
#
|