@@ -110,35 +110,37 @@ public static function parse($value, $flags = 0, $references = array())
110
110
mb_internal_encoding ('ASCII ' );
111
111
}
112
112
113
- $ i = 0 ;
114
- $ tag = self ::parseTag ($ value , $ i , $ flags );
115
- switch ($ value [$ i ]) {
116
- case '[ ' :
117
- $ result = self ::parseSequence ($ value , $ flags , $ i , $ references );
118
- ++$ i ;
119
- break ;
120
- case '{ ' :
121
- $ result = self ::parseMapping ($ value , $ flags , $ i , $ references );
122
- ++$ i ;
123
- break ;
124
- default :
125
- $ result = self ::parseScalar ($ value , $ flags , null , $ i , null === $ tag , $ references );
126
- }
113
+ try {
114
+ $ i = 0 ;
115
+ $ tag = self ::parseTag ($ value , $ i , $ flags );
116
+ switch ($ value [$ i ]) {
117
+ case '[ ' :
118
+ $ result = self ::parseSequence ($ value , $ flags , $ i , $ references );
119
+ ++$ i ;
120
+ break ;
121
+ case '{ ' :
122
+ $ result = self ::parseMapping ($ value , $ flags , $ i , $ references );
123
+ ++$ i ;
124
+ break ;
125
+ default :
126
+ $ result = self ::parseScalar ($ value , $ flags , null , $ i , null === $ tag , $ references );
127
+ }
127
128
128
- if (null !== $ tag ) {
129
- return new TaggedValue ($ tag , $ result );
130
- }
129
+ if (null !== $ tag ) {
130
+ return new TaggedValue ($ tag , $ result );
131
+ }
131
132
132
- // some comments are allowed at the end
133
- if (preg_replace ('/\s+#.*$/A ' , '' , substr ($ value , $ i ))) {
134
- throw new ParseException (sprintf ('Unexpected characters near "%s". ' , substr ($ value , $ i )), self ::$ parsedLineNumber + 1 , $ value , self ::$ parsedFilename );
135
- }
133
+ // some comments are allowed at the end
134
+ if (preg_replace ('/\s+#.*$/A ' , '' , substr ($ value , $ i ))) {
135
+ throw new ParseException (sprintf ('Unexpected characters near "%s". ' , substr ($ value , $ i )), self ::$ parsedLineNumber + 1 , $ value , self ::$ parsedFilename );
136
+ }
136
137
137
- if (isset ($ mbEncoding )) {
138
- mb_internal_encoding ($ mbEncoding );
138
+ return $ result ;
139
+ } finally {
140
+ if (isset ($ mbEncoding )) {
141
+ mb_internal_encoding ($ mbEncoding );
142
+ }
139
143
}
140
-
141
- return $ result ;
142
144
}
143
145
144
146
/**
0 commit comments