bug-gnu-utils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] gawk: wide characters concatenation bug


From: Aharon Robbins
Subject: Re: [PATCH] gawk: wide characters concatenation bug
Date: Mon, 13 Feb 2006 22:50:01 +0200

Thanks. The correct patch is a bit more involved. See below. I
appreciate your catching this.

Arnold

> Date: Fri, 10 Feb 2006 23:27:45 +0100
> From: Karel Zak <address@hidden>
> Subject: [PATCH] gawk: wide characters concatenation bug
> To: List bug-gnu-utils <address@hidden>,
>         Aharon Robbins <address@hidden>
>
>  Hi,
>
> the version 3.1.5 has problem with wide characters concatenation. The
> code in eval.c (Node_assign_concat part) reuse left part of the
> expression, but it doesn't reset WSTRCUR flag. So function str2wstr()
> doesn't work correctly on already forced string. It appears for example
> when you use the 2x index() call:
>
>
> $ (echo foo ; echo bar) | gawk '{a=$0; print index(a,"b"); getline; a = a $0; 
> print index(a,"b")}'
> 0
> 0 <--- correct is 4 ('b' in 'foobar')
>
>
>       Karel

--- ../gawk-3.1.5/eval.c        2005-07-26 21:07:43.000000000 +0300
+++ eval.c      2006-02-13 22:47:05.209212317 +0200
@@ -1176,6 +1176,13 @@
                        memcpy(l->stptr + l->stlen, r->stptr, r->stlen);
                        l->stlen += r->stlen;
                        l->stptr[l->stlen] = '\0';
+#if defined MBS_SUPPORT
+                       if (r->wstptr != NULL)
+                               free(r->wstptr);
+                       r->wstptr = NULL;
+                       r->wstlen = 0;
+                       r->flags &= ~WSTRCUR;
+#endif /* MBS_SUPPORT */
                } else {
                        char *nval;
                        size_t nlen = l->stlen + r->stlen + 2;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]