Merge pull request #8 from aheejin/strlib_bugfix

Fix bugs in strcmp/strncmp/strchr
This commit is contained in:
JF Bastien 2017-08-22 16:30:20 -07:00 committed by GitHub
commit 357305e18f

View File

@ -492,20 +492,22 @@ var string = (function() {
return 0; return 0;
}, },
strcmp: function(str1, str2) { strcmp: function(str1, str2) {
for (var i = 0;; ++i) for (var i1 = 0, i2 = 0; heap_uint8[str1 + i1] == heap_uint8[str2 + i2];
if (heap_uint8[str1 + i] != heap_uint8[str2 + i]) ++i1, ++i2) {
return heap_uint8[str1 + i] < heap_uint8[str2 + i]; if (heap_uint8[str1 + i1] == 0)
else if (heap_uint8[str1 + i] == 0) return 0;
break; }
return 0; return heap_uint8[str1 + i1] < heap_uint8[str2 + i2] ? -1 : 1;
}, },
strcoll: NYI('strcoll'), strcoll: NYI('strcoll'),
strncmp: function(str1, str2, num) { strncmp: function(str1, str2, num) {
for (var i = 0; i != num; ++i) for (var i1 = 0, i2 = 0; num > 0; ++i1, ++i2, --num) {
if (heap_uint8[str1 + i] != heap_uint8[str2 + i]) var s1 = heap_uint8[str1 + i1], s2 = heap_uint8[str2 + i2];
return heap_uint8[str1 + i] < heap_uint8[str2 + i]; if (s1 != s2)
else if (heap_uint8[str1 + i] == 0) return s1 < s2 ? -1 : 1;
break; else if (s1 == 0)
return 0;
}
return 0; return 0;
}, },
strxfrm: NYI('strxfrm'), strxfrm: NYI('strxfrm'),
@ -517,8 +519,8 @@ var string = (function() {
var i = 0; var i = 0;
for (; heap_uint8[str + i] != 0; ++i) for (; heap_uint8[str + i] != 0; ++i)
if (heap_uint8[str + i] == character) if (heap_uint8[str + i] == character)
return i; return str + i;
return heap_uint8[str + i] == 0 ? i : 0; return heap_uint8[str + i] == 0 ? str + i : 0;
}, },
strcspn: NYI('strcspn'), strcspn: NYI('strcspn'),
strpbrk: NYI('strpbrk'), strpbrk: NYI('strpbrk'),