|
@@ -228,15 +228,20 @@ bool MD5Parser::ParseSection(Section &out) {
|
|
out.data[out.length] = '\0';
|
|
out.data[out.length] = '\0';
|
|
|
|
|
|
// parse a string, enclosed in quotation marks
|
|
// parse a string, enclosed in quotation marks
|
|
-#define AI_MD5_PARSE_STRING_IN_QUOTATION(out) \
|
|
|
|
- while ('\"' != *sz) \
|
|
|
|
- ++sz; \
|
|
|
|
- const char *szStart = ++sz; \
|
|
|
|
- while ('\"' != *sz) \
|
|
|
|
- ++sz; \
|
|
|
|
- const char *szEnd = (sz++); \
|
|
|
|
- out.length = (ai_uint32)(szEnd - szStart); \
|
|
|
|
- ::memcpy(out.data, szStart, out.length); \
|
|
|
|
|
|
+#define AI_MD5_PARSE_STRING_IN_QUOTATION(out) \
|
|
|
|
+ out.length = 0; \
|
|
|
|
+ while ('\"' != *sz && '\0' != *sz) \
|
|
|
|
+ ++sz; \
|
|
|
|
+ if ('\0' != *sz) { \
|
|
|
|
+ const char *szStart = ++sz; \
|
|
|
|
+ while ('\"' != *sz && '\0' != *sz) \
|
|
|
|
+ ++sz; \
|
|
|
|
+ if ('\0' != *sz) { \
|
|
|
|
+ const char *szEnd = (sz++); \
|
|
|
|
+ out.length = (ai_uint32)(szEnd - szStart); \
|
|
|
|
+ ::memcpy(out.data, szStart, out.length); \
|
|
|
|
+ } \
|
|
|
|
+ } \
|
|
out.data[out.length] = '\0';
|
|
out.data[out.length] = '\0';
|
|
// ------------------------------------------------------------------------------------------------
|
|
// ------------------------------------------------------------------------------------------------
|
|
// .MD5MESH parsing function
|
|
// .MD5MESH parsing function
|