Fossil SCM
Fix crnl-warning for file which starts with þÿ or ÿþ (latin-1) and has an odd number of bytes.
Commit
25eec8cfafa70f513cd63c2f5453ce0250994799
Parent
70d15c8104a2509…
1 file changed
+10
-2
+10
-2
| --- src/checkin.c | ||
| +++ src/checkin.c | ||
| @@ -914,12 +914,20 @@ | ||
| 914 | 914 | Blob fname; /* Relative pathname of the file */ |
| 915 | 915 | static int allOk = 0; /* Set to true to disable this routine */ |
| 916 | 916 | |
| 917 | 917 | if( allOk ) return 0; |
| 918 | 918 | fUnicode = starts_with_utf16_bom(p, 0, 0); |
| 919 | - eType = fUnicode ? looks_like_utf16(p, &lookFlags) : | |
| 920 | - looks_like_utf8(p, &lookFlags); | |
| 919 | + if (fUnicode) { | |
| 920 | + eType = looks_like_utf16(p, &lookFlags); | |
| 921 | + if ( lookFlags&LOOK_ODD ){ | |
| 922 | + /* It cannot be unicode, so try again as single-byte encoding */ | |
| 923 | + fUnicode = 0; | |
| 924 | + eType = looks_like_utf8(p, &lookFlags); | |
| 925 | + } | |
| 926 | + }else{ | |
| 927 | + eType = looks_like_utf8(p, &lookFlags); | |
| 928 | + } | |
| 921 | 929 | fHasCrLf = (lookFlags & LOOK_CRLF); |
| 922 | 930 | fHasLength = (lookFlags & LOOK_LENGTH); |
| 923 | 931 | if( eType==0 || fHasCrLf || fUnicode ){ |
| 924 | 932 | const char *zWarning; |
| 925 | 933 | const char *zDisable; |
| 926 | 934 |
| --- src/checkin.c | |
| +++ src/checkin.c | |
| @@ -914,12 +914,20 @@ | |
| 914 | Blob fname; /* Relative pathname of the file */ |
| 915 | static int allOk = 0; /* Set to true to disable this routine */ |
| 916 | |
| 917 | if( allOk ) return 0; |
| 918 | fUnicode = starts_with_utf16_bom(p, 0, 0); |
| 919 | eType = fUnicode ? looks_like_utf16(p, &lookFlags) : |
| 920 | looks_like_utf8(p, &lookFlags); |
| 921 | fHasCrLf = (lookFlags & LOOK_CRLF); |
| 922 | fHasLength = (lookFlags & LOOK_LENGTH); |
| 923 | if( eType==0 || fHasCrLf || fUnicode ){ |
| 924 | const char *zWarning; |
| 925 | const char *zDisable; |
| 926 |
| --- src/checkin.c | |
| +++ src/checkin.c | |
| @@ -914,12 +914,20 @@ | |
| 914 | Blob fname; /* Relative pathname of the file */ |
| 915 | static int allOk = 0; /* Set to true to disable this routine */ |
| 916 | |
| 917 | if( allOk ) return 0; |
| 918 | fUnicode = starts_with_utf16_bom(p, 0, 0); |
| 919 | if (fUnicode) { |
| 920 | eType = looks_like_utf16(p, &lookFlags); |
| 921 | if ( lookFlags&LOOK_ODD ){ |
| 922 | /* It cannot be unicode, so try again as single-byte encoding */ |
| 923 | fUnicode = 0; |
| 924 | eType = looks_like_utf8(p, &lookFlags); |
| 925 | } |
| 926 | }else{ |
| 927 | eType = looks_like_utf8(p, &lookFlags); |
| 928 | } |
| 929 | fHasCrLf = (lookFlags & LOOK_CRLF); |
| 930 | fHasLength = (lookFlags & LOOK_LENGTH); |
| 931 | if( eType==0 || fHasCrLf || fUnicode ){ |
| 932 | const char *zWarning; |
| 933 | const char *zDisable; |
| 934 |