View Ticket
Not logged in
Ticket UUID: 5982aa506467d6acd1f426b10ce3eab14e7e79ac
Title: Malformed manifest error when committing non-ascii-named files
Status: Fixed Type: Code_Defect
Severity: Important Priority:
Subsystem: Resolution: Fixed
Last Modified: 2011-06-29 11:21:04
Version Found In: [32ad9a1584]
Description & Comments:
Problem is actual since check-in [32ad9a1584] after closing ticket [3f0216560679fd41]. When using only ascii (ansi) names all's ok.

How to reproduce:

$ fossil new local.fossil
project-id: 6ebb7aa8bba00a717242424eb34e5210a90e3551
server-id:  1f0d2c5e79252d625ddd9db92be893702b4e394a
admin-user: flanker (initial password is "******")
$ fossil open local.fossil
$ fossil add "Приложение 3.doc"
ADDED  Приложение 3.doc
$ fossil commit -m "test"
New_Version: d709fe4fa6e2e544ccdc170bce9ee7025273ce95
$ fossil add 123.txt 
ADDED  123.txt
$ fossil commit -m "test2"
New_Version: 8f10304d006b7c39d9ed422985a67604863a4290
fossil: manifest file (5) is malformed

The most sensitive change in this check-in was:

+int fossil_strcmp(const char *zA, const char *zB){
+  if( zA==0 ){
+    if( zB==0 ) return 0;
+    return -1;
+  }else if( zB==0 ){
+    return +1;
+  }else{
+    int a, b;
+    do{
+      a = *zA++;
+      b = *zB++;
+    }while( a==b && a!=0 );
+    return a - b;
   }
 }

Author said that this function can compare strings without considering locale. Maybe problem is here.