X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fbuilder%2Fjson-parser-state.cpp;h=154715650aceba57668d1f71af356d988980a9c8;hp=ca7b139ef3b4473aab4d5f1a115cb91583147609;hb=7ca616a8fe0d42e273784e2660c0ad0544d988bd;hpb=e2eda444afbe82e9591fe198eef339227f90a616 diff --git a/dali-toolkit/internal/builder/json-parser-state.cpp b/dali-toolkit/internal/builder/json-parser-state.cpp index ca7b139..1547156 100644 --- a/dali-toolkit/internal/builder/json-parser-state.cpp +++ b/dali-toolkit/internal/builder/json-parser-state.cpp @@ -1,18 +1,19 @@ -// -// Copyright (c) 2014 Samsung Electronics Co., Ltd. -// -// Licensed under the Flora License, Version 1.0 (the License); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://floralicense.org/license/ -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an AS IS BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// +/* + * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ // CLASS HEADER #include @@ -349,6 +350,11 @@ bool JsonParserState::ParseWhiteSpace() bool c_comment = false; bool cpp_comment = false; + if( mIter == mEnd ) + { + return true; + } + // skip white space char nextChar = 0; while(1) @@ -663,6 +669,8 @@ char* JsonParserState::EncodeString() mNumberOfParsedChars += last - first; mNumberOfParsedChars += 1 ; // null terminator + mCurrent.SetSubstitution( substitution > 1 ); + // return true; return &(*first); @@ -720,6 +728,11 @@ bool JsonParserState::ParseJson(VectorChar& source) { if( '}' == currentChar ) { + if(',' == lastCharacter) + { + return Error("Unexpected comma"); + } + if( !UpToParent() ) { return false; @@ -797,15 +810,22 @@ bool JsonParserState::ParseJson(VectorChar& source) } else if( '{' == currentChar ) { - NewNode(name, TreeNode::OBJECT); - mState = STATE_OBJECT; - AdvanceSkipWhiteSpace(1); + if( '}' == lastCharacter ) + { + return Error("Expected a comma"); + } + else + { + NewNode(name, TreeNode::OBJECT); + mState = STATE_OBJECT; + AdvanceSkipWhiteSpace(1); + } } else if( '}' == currentChar ) { if(',' == lastCharacter) { - return Error("Expected a value"); + return Error("Expected another value"); } if(mCurrent.GetType() != TreeNode::OBJECT)