From b64373a9979a223ffa1cd3fab303465dc745a4f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20S=C3=B8rvig?= Date: Fri, 21 Jun 2024 14:52:39 +0200 Subject: [PATCH] wasm: fix handling of invalid EXPORT_NAMEs Commit a3ab79ec8 fixed the "leading digit" case, but broke the original "replace invalid chars" case. Fix regexp usage. Use "^[0-9]" for matching a leading digit and then "[^a-zA-Z0-9_]" for matching all chars not valid in a JavaScript identifier. Change-Id: I2ab2dcb73b201a996c38b0cab55a049eb39d8b2b Reviewed-by: Alexandru Croitor (cherry picked from commit ba42c48dd460110d02b078c1460be0e268624faa) Reviewed-by: Qt Cherry-pick Bot --- src/corelib/Qt6WasmMacros.cmake | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/corelib/Qt6WasmMacros.cmake b/src/corelib/Qt6WasmMacros.cmake index 989f3dde50e..b590d893962 100644 --- a/src/corelib/Qt6WasmMacros.cmake +++ b/src/corelib/Qt6WasmMacros.cmake @@ -135,12 +135,21 @@ function(_qt_internal_wasm_export_name_for_target out target) if(export_name) set(${out} "${export_name}" PARENT_SCOPE) else() - string(REGEX MATCH "[^a-zA-Z_]" has_invalid_char "${target}") - if(has_invalid_char) - set(${out} "_${target}_entry" PARENT_SCOPE) + # Modify target name to remove characters which are not valid in + # JavaScript identifiers. + + # Prefix leading digit with '_' (2dpaint -> _2dpaint) + if("${target}" MATCHES "^[0-9]") + set(targ "_${target}") else() - set(${out} "${target}_entry" PARENT_SCOPE) + set(targ "${target}") endif() + + # Replace remaining non-legal chars with '_' (target-foo -> target_foo) + string(REGEX REPLACE "[^a-zA-Z0-9_]" "_" targ "${targ}") + + # Append "_entry" and return + set(${out} "${targ}_entry" PARENT_SCOPE) endif() endfunction()