MIRROR: javascript for ๐Ÿœ's, a tiny runtime with big ambitions
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

add BOM stripping

+14 -1
+14 -1
src/modules/response.c
··· 291 291 return d ? d->body_type : NULL; 292 292 } 293 293 294 + static void strip_utf8_bom(const uint8_t **data, size_t *size) { 295 + if (!data || !*data || !size || *size < 3) return; 296 + if ((*data)[0] == 0xEF && (*data)[1] == 0xBB && (*data)[2] == 0xBF) { *data += 3; *size -= 3; } 297 + } 298 + 294 299 static void resolve_body_promise( 295 300 ant_t *js, ant_value_t promise, 296 301 const uint8_t *data, size_t size, ··· 303 308 break; 304 309 } 305 310 case BODY_JSON: { 306 - ant_value_t str = (data && size > 0) ? js_mkstr(js, (const char *)data, size) : js_mkstr(js, "", 0); 311 + const uint8_t *json_data = data; 312 + size_t json_size = size; 313 + strip_utf8_bom(&json_data, &json_size); 314 + 315 + ant_value_t str = (json_data && json_size > 0) 316 + ? js_mkstr(js, (const char *)json_data, json_size) 317 + : js_mkstr(js, "", 0); 318 + 307 319 ant_value_t parsed = json_parse_value(js, str); 308 320 if (is_err(parsed)) js_reject_promise(js, promise, response_rejection_reason(js, parsed)); 309 321 else js_resolve_promise(js, promise, parsed); 322 + 310 323 break; 311 324 } 312 325 case BODY_ARRAYBUFFER: {