Author: jra Date: 2004-09-01 17:39:22 +0000 (Wed, 01 Sep 2004) New Revision: 2174
WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/trunk/source/lib&rev=2174&nolog=1 Log: Fix for #1546 from [EMAIL PROTECTED] Preserve errno in MB strupper_m/strlower_m. Jeremy. Modified: trunk/source/lib/util_str.c Changeset: Modified: trunk/source/lib/util_str.c =================================================================== --- trunk/source/lib/util_str.c 2004-09-01 14:49:43 UTC (rev 2173) +++ trunk/source/lib/util_str.c 2004-09-01 17:39:22 UTC (rev 2174) @@ -1391,6 +1391,7 @@ void strlower_m(char *s) { size_t len; + int errno_save; /* this is quite a common operation, so we want it to be fast. We optimise for the ascii case, knowing that all our @@ -1408,11 +1409,13 @@ /* I assume that lowercased string takes the same number of bytes * as source string even in UTF-8 encoding. (VIV) */ len = strlen(s) + 1; + errno_save = errno; errno = 0; unix_strlower(s,len,s,len); /* Catch mb conversion errors that may not terminate. */ if (errno) s[len-1] = '\0'; + errno = errno_save; } /** @@ -1422,6 +1425,7 @@ void strupper_m(char *s) { size_t len; + int errno_save; /* this is quite a common operation, so we want it to be fast. We optimise for the ascii case, knowing that all our @@ -1439,11 +1443,13 @@ /* I assume that lowercased string takes the same number of bytes * as source string even in multibyte encoding. (VIV) */ len = strlen(s) + 1; + errno_save = errno; errno = 0; unix_strupper(s,len,s,len); /* Catch mb conversion errors that may not terminate. */ if (errno) s[len-1] = '\0'; + errno = errno_save; } /**
