{"record":{"id":"4c39c206e03f35d6","repo":"nodejs/node","slug":"0-4c39c2","errorCode":"0","errorMessage":"U_INVALID_FORMAT_ERROR occurred but UCONFIG_NO_LEGACY_CONVERSION is on so this is expected.\\n","messagePattern":"U_INVALID_FORMAT_ERROR occurred but UCONFIG_NO_LEGACY_CONVERSION is on so this is expected\\.\\\\n","errorType":"console","errorClass":null,"httpStatus":null,"severity":"info","filePath":"deps/icu-small/source/tools/toolutil/package.cpp","lineNumber":360,"sourceCode":"        exit(U_FILE_ACCESS_ERROR);\n    }\n\n    /* pad the file to a multiple of 16 using the usual padding byte */\n    if(fileLength<length) {\n        memset(data.getAlias()+fileLength, 0xaa, length-fileLength);\n    }\n\n    fclose(file);\n\n    // minimum check for ICU-format data\n    errorCode=U_ZERO_ERROR;\n    typeEnum=getTypeEnumForInputData(data.getAlias(), length, &errorCode);\n    if(typeEnum<0 || U_FAILURE(errorCode)) {\n        fprintf(stderr, \"icupkg: not an ICU data file: \\\"%s\\\"\\n\", filename);\n#if !UCONFIG_NO_LEGACY_CONVERSION\n        exit(U_INVALID_FORMAT_ERROR);\n#else\n        fprintf(stderr, \"U_INVALID_FORMAT_ERROR occurred but UCONFIG_NO_LEGACY_CONVERSION is on so this is expected.\\n\");\n        exit(0);\n#endif\n    }\n    type=makeTypeLetter(typeEnum);\n\n    return data.orphan();\n}\n\n// .dat package file representation ---------------------------------------- ***\n\nU_CDECL_BEGIN\n\nstatic int32_t U_CALLCONV\ncompareItems(const void * /*context*/, const void *left, const void *right) {\n    U_NAMESPACE_USE\n\n    return (int32_t)strcmp(((Item *)left)->name, ((Item *)right)->name);\n}","sourceCodeStart":342,"sourceCodeEnd":378,"githubUrl":"https://github.com/nodejs/node/blob/1b2de5e052fc0fb95fd7fb6846dcec4ade598e9e/deps/icu-small/source/tools/toolutil/package.cpp#L342-L378","documentation":"Informational message printed when ICU is built with UCONFIG_NO_LEGACY_CONVERSION enabled and an input file fails the ICU data format check (error 888). Instead of exiting with an error, the tool exits with code 0, treating this as expected behavior. This is not an error condition — it indicates legacy conversion support was intentionally compiled out.","triggerScenarios":"getTypeEnumForInputData() fails on a data file, but UCONFIG_NO_LEGACY_CONVERSION is defined at compile time. The preprocessor #else branch fires, prints this informational message, and exits(0) instead of exit(U_INVALID_FORMAT_ERROR).","commonSituations":"Running icupkg on a system or embedded build where legacy charset conversion is disabled to reduce ICU binary size; cross-compilation environments with minimal ICU configurations; stripped-down ICU builds for mobile or IoT platforms.","solutions":["This is expected behavior if UCONFIG_NO_LEGACY_CONVERSION is intentionally enabled — no action needed.","If legacy conversion is needed, rebuild ICU without UCONFIG_NO_LEGACY_CONVERSION.","Verify the data file uses a supported (non-legacy) charset if you still need it processed."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["This is informational when UCONFIG_NO_LEGACY_CONVERSION is enabled — no defensive action needed.","If legacy conversion is required, rebuild ICU without UCONFIG_NO_LEGACY_CONVERSION.","Document in build configs that legacy conversion is intentionally disabled."],"tags":["icu","icupkg","config","legacy-conversion","build-config","informational"],"backgroundTag":null,"analyzedSha":"1b2de5e052fc0fb95fd7fb6846dcec4ade598e9e","analyzedAt":"2026-08-13T00:53:24.642Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}