Skip to content

Commit

Permalink
Merge pull request #65 from sps/master.
Browse files Browse the repository at this point in the history
fix for "longs not correctly decoded". Fixes #65, fixes #64
  • Loading branch information
stig committed May 4, 2011
2 parents 8cabcf4 + b8ea965 commit 60703d8
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 6 deletions.
11 changes: 7 additions & 4 deletions Classes/SBJsonStreamParser.m
Expand Up @@ -33,7 +33,7 @@
#import "SBJsonStreamParser.h"
#import "SBJsonTokeniser.h"
#import "SBJsonStreamParserState.h"

#import <limits.h>

@implementation SBJsonStreamParser

Expand Down Expand Up @@ -151,9 +151,12 @@ - (void)handleNumber:(sbjson_token_t)tok {
NSNumber *number;
if (tok == sbjson_token_integer && len < 12) {
char *e = NULL;
long l = strtol(buf, &e, 0);
number = [NSNumber numberWithLong:l];

long long l = strtoll(buf, &e, 0);
if (l > INT_MAX) {
number = [NSNumber numberWithLongLong:l];
} else {
number = [NSNumber numberWithLong:l];
}
} else if (tok == sbjson_token_double && len < 7) {
char *e = NULL;
double d = strtod(buf, &e);
Expand Down
4 changes: 2 additions & 2 deletions Tests/StreamParserTest.m
Expand Up @@ -93,8 +93,8 @@ - (void)testBoolAndNull {
}

- (void)testNumbers {
STAssertEquals([parser parse:x("[0,1.98,-23.7e+3]")], SBJsonStreamParserComplete, nil);
STAssertEqualObjects(delegate.string, @"(0 0 1.98 -23700 0) ", nil);
STAssertEquals([parser parse:x("[0,1.98,-23.7e+3,20023767592]")], SBJsonStreamParserComplete, nil);
STAssertEqualObjects(delegate.string, @"(0 0 1.98 -23700 20023767592 0) ", nil);
}

- (void)testSimpleStrings {
Expand Down

0 comments on commit 60703d8

Please sign in to comment.