http://nagoya.apache.org/bugzilla/show_bug.cgi?id=2258

*** shadow/2258 Thu Jun 21 00:13:15 2001
--- shadow/2258.tmp.8629        Thu Jun 21 00:13:15 2001
***************
*** 0 ****
--- 1,60 ----
+ +============================================================================+
+ | Bug in Iconv and Iconv390                                                  |
+ +----------------------------------------------------------------------------+
+ |        Bug #: 2258                        Product: Xerces-C                |
+ |       Status: NEW                         Version: 1.4                     |
+ |   Resolution:                            Platform: Sun                     |
+ |     Severity: Critical                 OS/Version: Solaris                 |
+ |     Priority: Other                     Component: Utilities               |
+ +----------------------------------------------------------------------------+
+ |  Assigned To: [EMAIL PROTECTED]                                  |
+ |  Reported By: [EMAIL PROTECTED]                                             |
+ |      CC list: Cc:                                                          |
+ +----------------------------------------------------------------------------+
+ |          URL:                                                              |
+ +============================================================================+
+ |                              DESCRIPTION                                   |
+ The compareNIString seems to compare one char to much:
+ 
+     unsigned int  n = 0;
+     const XMLCh* cptr1 = comp1;
+     const XMLCh* cptr2 = comp2;
+ 
+     while ( (*cptr1 != 0) && (*cptr2 != 0) && (n < maxChars) )
+     {
+         wint_t wch1 = towupper(*cptr1);
+         wint_t wch2 = towupper(*cptr2);
+         if (wch1 != wch2)
+             break;
+ 
+         cptr1++;
+         cptr2++;
+         n++;
+     }
+     return (int) ( towupper(*cptr1) - towupper(*cptr2) );
+ 
+ When I want to compare only 1 character it will return the difference between 
+ to second ones of the provided strings!!
+ The correct code should look like the following:
+ 
+    unsigned int  n = 0;
+     const XMLCh* cptr1 = comp1;
+     const XMLCh* cptr2 = comp2;
+ 
+     while ( (*cptr1 != 0) && (*cptr2 != 0) && (n < maxChars) )
+     {
+         wint_t wch1 = towupper(*cptr1);
+         wint_t wch2 = towupper(*cptr2);
+         if (wch1 != wch2)
+             return int(wch1) - int(wch2);
+ 
+         cptr1++;
+         cptr2++;
+         n++;
+     }
+     if (n == maxChars)
+       return 0;
+     else
+       return (int) ( towupper(*cptr1) - towupper(*cptr2) );
+ 
+ This is how the Iconv400, Windows and ICU are doing it.
\ No newline at end of file

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to