bug-gnulib
[Top][All Lists]
Advanced

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

Re: From wchar_t to char32_t


From: Paul Eggert
Subject: Re: From wchar_t to char32_t
Date: Tue, 4 Jul 2023 19:51:35 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0


On 2023-07-01 07:35, Bruno Haible wrote:
-      wchar_t wch;
-      size_t nbytes = mbrtowc (&wch, s, n, &d->mbs);
+      char32_t wch;
+      size_t nbytes = mbrtoc32 (&wch, s, n, &d->mbs);
       if (0 < nbytes && nbytes < (size_t) -2)
         {
           *pwc = wch;
+          if (nbytes == (size_t) -3)
+            nbytes = 0;
           return nbytes;

That last change doesn't match the comment for the mbs_to_wchar function, which says that the function always returns a positive int. Callers depend on this.

Since nbytes cannot be (size_t) -3 on any known implementation, it's not surprising that this issue wasn't found by testing. And since it'll likely be a hassle to port the rest of the code to purely-theoretical platforms where nbytes == (size_t) -3, I suggest instead simply adding a comment that nbytes cannot be (size_t) -3 there. This would follow the advice I added to the Gnulib manual recently, here:

https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=e046d5458353f112e78893ca03d855c8a9aa2e39



reply via email to

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