From 0353e4c19643665bc368912ffaae2457eabea004 Mon Sep 17 00:00:00 2001 From: fangyidong Date: Wed, 16 May 2012 13:51:15 +0000 Subject: [PATCH] Issue #12: Excessive memory consumption in parse() (contributed by glen.tw) --- doc/json.lex | 4 ++-- src/main/java/org/json/simple/parser/Yylex.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/json.lex b/doc/json.lex index e22dd34..cdb2753 100644 --- a/doc/json.lex +++ b/doc/json.lex @@ -46,7 +46,7 @@ FALLBACK_CH = . } \\ {sb.append('\\');} - \" { sb.delete(0, sb.length());yybegin(STRING_BEGIN);} + \" { sb = null; sb = new StringBuffer(); yybegin(STRING_BEGIN);} {INT} { Long val=Long.valueOf(yytext()); return new Yytoken(Yytoken.TYPE_VALUE, val);} {DOUBLE} { Double val=Double.valueOf(yytext()); return new Yytoken(Yytoken.TYPE_VALUE, val);} "true"|"false" { Boolean val=Boolean.valueOf(yytext()); return new Yytoken(Yytoken.TYPE_VALUE, val);} @@ -58,4 +58,4 @@ FALLBACK_CH = . "," { return new Yytoken(Yytoken.TYPE_COMMA,null);} ":" { return new Yytoken(Yytoken.TYPE_COLON,null);} {WS}+ {} - {FALLBACK_CH} { throw new ParseException(yychar, ParseException.ERROR_UNEXPECTED_CHAR, new Character(yycharat(0)));} \ No newline at end of file + {FALLBACK_CH} { throw new ParseException(yychar, ParseException.ERROR_UNEXPECTED_CHAR, new Character(yycharat(0)));} diff --git a/src/main/java/org/json/simple/parser/Yylex.java b/src/main/java/org/json/simple/parser/Yylex.java index 42ce508..e58e27e 100644 --- a/src/main/java/org/json/simple/parser/Yylex.java +++ b/src/main/java/org/json/simple/parser/Yylex.java @@ -575,7 +575,7 @@ int getPosition(){ } case 25: break; case 4: - { sb.delete(0, sb.length());yybegin(STRING_BEGIN); + { sb = null; sb = new StringBuffer(); yybegin(STRING_BEGIN); } case 26: break; case 16: