aboutsummaryrefslogtreecommitdiff
path: root/src/library.js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-05-26 19:45:05 +0200
committerAlon Zakai <alonzakai@gmail.com>2012-05-26 19:45:05 +0200
commite38d9980c45deeeb1bc50240fd5def8a88da2932 (patch)
tree65bc96935b25303b00a4008fa016bd84fe594fc2 /src/library.js
parentdfe17491276ec8b660e31b45f6c628bc028fe93a (diff)
fix strtod behavior on non-ints
Diffstat (limited to 'src/library.js')
-rw-r--r--src/library.js9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/library.js b/src/library.js
index 4b7b755b..f406f02a 100644
--- a/src/library.js
+++ b/src/library.js
@@ -3457,6 +3457,8 @@ LibraryManager.library = {
strtod__deps: ['isspace', 'isdigit'],
strtod: function(str, endptr) {
+ var origin = str;
+
// Skip space.
while (_isspace({{{ makeGetValue('str', 0, 'i8') }}})) str++;
@@ -3471,15 +3473,22 @@ LibraryManager.library = {
var chr;
var ret = 0;
+ var legit = false;
// Get whole part.
while(1) {
chr = {{{ makeGetValue('str', 0, 'i8') }}};
if (!_isdigit(chr)) break;
+ legit = true;
ret = ret*10 + chr - '0'.charCodeAt(0);
str++;
}
+ if (!legit) {
+ {{{ makeSetValue('endptr', 0, 'origin', '*') }}}
+ return 0;
+ }
+
// Get fractional part.
if ({{{ makeGetValue('str', 0, 'i8') }}} == '.'.charCodeAt(0)) {
str++;