aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-04-16 21:19:28 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-04-16 21:19:28 -0700
commit396cb4f707dfab0a38edc40b430b441da353ffbb (patch)
treed3318b3da155d2079cb57c1c1e7010e3e9aa146b
parentb7015676a448b95999120d91ceaa2f2d21aeb0eb (diff)
fix sscanf handling of ends of %s
-rw-r--r--src/library.js2
-rwxr-xr-xtests/runner.py12
2 files changed, 11 insertions, 3 deletions
diff --git a/src/library.js b/src/library.js
index b468f3f1..3dbf738d 100644
--- a/src/library.js
+++ b/src/library.js
@@ -2294,7 +2294,7 @@ LibraryManager.library = {
(type === 'x' && (next >= '0'.charCodeAt(0) && next <= '9'.charCodeAt(0) ||
next >= 'a'.charCodeAt(0) && next <= 'f'.charCodeAt(0) ||
next >= 'A'.charCodeAt(0) && next <= 'F'.charCodeAt(0))) ||
- (type === 's') &&
+ (type === 's' && (next != ' '.charCodeAt(0) && next != '\t'.charCodeAt(0) && next != '\n'.charCodeAt(0))) &&
(formatIndex >= format.length || next !== format[formatIndex].charCodeAt(0))) { // Stop when we read something that is coming up
buffer.push(String.fromCharCode(next));
next = get();
diff --git a/tests/runner.py b/tests/runner.py
index 871230c6..a6e65d20 100755
--- a/tests/runner.py
+++ b/tests/runner.py
@@ -3747,12 +3747,20 @@ at function.:blag
sscanf("-3.03", "%f", &a);
printf("%.4f\n", a);
+ char buffy[100];
+ sscanf("cheez some thing moar 123\nyet more\n", "cheez %s", buffy);
+ printf("|%s|\n", buffy);
+ sscanf("cheez something\nmoar 123\nyet more\n", "cheez %s", buffy);
+ printf("|%s|\n", buffy);
+ sscanf("cheez somethingmoar\tyet more\n", "cheez %s", buffy);
+ printf("|%s|\n", buffy);
return 0;
}
'''
- self.do_run(src, 'en-us : 2\nen-r : 99\nen : 3\n1.234567, 0.000000\n-3.0300')
+ self.do_run(src, 'en-us : 2\nen-r : 99\nen : 3\n1.234567, 0.000000\n-3.0300\n|some|\n|something|\n|somethingmoar|')
- # Part 2: doubles
+ def test_sscanf_2(self):
+ # doubles
if Settings.USE_TYPED_ARRAYS == 2:
for ftype in ['float', 'double']:
src = r'''