| 1187 | #endif |
| 1188 | |
| 1189 | static const char *ReadString(std::string *s, const char *ptr, size_t len) { |
| 1190 | // Read untile NULL(\0). |
| 1191 | const char *p = ptr; |
| 1192 | const char *q = ptr; |
| 1193 | while ((size_t(q - ptr) < len) && (*q) != 0) { |
| 1194 | q++; |
| 1195 | } |
| 1196 | |
| 1197 | if (size_t(q - ptr) >= len) { |
| 1198 | (*s).clear(); |
| 1199 | return NULL; |
| 1200 | } |
| 1201 | |
| 1202 | (*s) = std::string(p, q); |
| 1203 | |
| 1204 | return q + 1; // skip '\0' |
| 1205 | } |
| 1206 | |
| 1207 | static bool ReadAttribute(std::string *name, std::string *type, |
| 1208 | std::vector<unsigned char> *data, size_t *marker_size, |
no test coverage detected