This is an automated email from the ASF dual-hosted git repository.

leginee pushed a commit to branch bazel-migration
in repository https://gitbox.apache.org/repos/asf/openoffice.git

commit c75bc54c1b1cc86e48bbebfb932b048988061383
Author: Peter Kovacs <[email protected]>
AuthorDate: Thu Jun 18 04:30:23 2026 +0200

    fix incorectly merged res files.
---
 main/desktop/BUILD.bazel | 82 +++++++++++++++++++++++++++++++++++-------------
 main/desktop/readme.md   | 14 +++++++++
 main/staging/BUILD.bazel |  1 +
 3 files changed, 76 insertions(+), 21 deletions(-)

diff --git a/main/desktop/BUILD.bazel b/main/desktop/BUILD.bazel
index 0eba26c475..42c2622380 100644
--- a/main/desktop/BUILD.bazel
+++ b/main/desktop/BUILD.bazel
@@ -1,7 +1,7 @@
 package(default_visibility = ["//visibility:public"])
 
 load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library")
-load("//build/rules:rsc_pipeline.bzl", "rsc_res", "rename_file")
+load("//build/rules:rsc_pipeline.bzl", "rsc_res")
 
 # ── Common compile settings 
───────────────────────────────────────────────────
 _DEFINES = [
@@ -1074,33 +1074,73 @@ cc_binary(
     visibility = ["//visibility:public"],
 )
 
+# RSC resource libraries.  Upstream's desktop module builds THREE separate
+# resource libraries (one .res per ResMgr name), NOT one merged .res.  Each is
+# loaded at runtime by ResMgr::CreateResMgr("<name>") → <name>en-US.res:
+#   * dkt           (util/makefile.mk)            desktop.src + wizard.src
+#   * deployment    (source/deployment/...)       registry/manager/misc/unopkg
+#   * deploymentgui (source/deployment/gui/...)   dp_gui_*.src  ← Extension 
Manager
+# A previous single glob(["source/**/*.src"]) merged everything into one .res
+# staged as both dkten-US and deploymenten-US, leaving deploymentguien-US.res
+# absent → ResMgr::CreateResMgr("deploymentgui") returned NULL → DeploymentGui-
+# ResMgr::get() NULL-deref in ResMgr::GetResource the moment Extension Manager
+# opened.  Split here to match upstream; hdrs/includes/images are shared (a
+# strict partition of the same inputs that compiled as one).
+_DESKTOP_RES_HDRS = glob(["inc/**/*.hrc", "source/**/*.hrc"]) + [
+    "//main/svtools:svtools_hrc",
+    "//main/svl:svl_hrc",
+]
+
+_DESKTOP_RES_INCLUDES = [
+    "main/desktop/inc",
+    "main/desktop/source/app",
+    "main/desktop/source/inc",
+    "main/desktop/source/deployment/registry/inc",
+    "main/svtools/inc",
+    "main/svl/inc",
+]
+
+_DESKTOP_RES_IMAGES = [
+    "//main/default_images:desktop_res_images",
+    "//main/default_images:shared_images",
+]
+
+# dkt → dkten-US.res  (app + migration wizard strings)
 rsc_res(
     name     = "desktop_res",
-    srcs     = glob(["source/**/*.src"]),
-    hdrs     = glob(["inc/**/*.hrc", "source/**/*.hrc"]) + [
-        "//main/svtools:svtools_hrc",
-        "//main/svl:svl_hrc",
-    ],
-    includes = [
-        "main/desktop/inc",
-        "main/desktop/source/app",
-        "main/desktop/source/inc",
-        "main/desktop/source/deployment/registry/inc",
-        "main/svtools/inc",
-        "main/svl/inc",
-    ],
-    images      = [
-        "//main/default_images:desktop_res_images",
-        "//main/default_images:shared_images",
+    srcs     = [
+        "source/app/desktop.src",
+        "source/migration/wizard.src",
     ],
+    hdrs     = _DESKTOP_RES_HDRS,
+    includes = _DESKTOP_RES_INCLUDES,
+    images      = _DESKTOP_RES_IMAGES,
+    images_root = "main/default_images",
+    visibility = ["//visibility:public"],
+)
+
+# deployment → deploymenten-US.res  (registry/manager/misc/unopkg, no gui)
+rsc_res(
+    name     = "deployment_res",
+    srcs     = glob(
+        ["source/deployment/**/*.src"],
+        exclude = ["source/deployment/gui/*.src"],
+    ),
+    hdrs     = _DESKTOP_RES_HDRS,
+    includes = _DESKTOP_RES_INCLUDES,
+    images      = _DESKTOP_RES_IMAGES,
     images_root = "main/default_images",
     visibility = ["//visibility:public"],
 )
 
-rename_file(
-    name = "deployment_res",
-    src  = ":desktop_res",
-    out  = "deploymenten-US.res",
+# deploymentgui → deploymentguien-US.res  (Extension Manager dialogs)
+rsc_res(
+    name     = "deploymentgui_res",
+    srcs     = glob(["source/deployment/gui/*.src"]),
+    hdrs     = _DESKTOP_RES_HDRS,
+    includes = _DESKTOP_RES_INCLUDES,
+    images      = _DESKTOP_RES_IMAGES,
+    images_root = "main/default_images",
     visibility = ["//visibility:public"],
 )
 
diff --git a/main/desktop/readme.md b/main/desktop/readme.md
index 0bf57f325b..01fe802fb7 100644
--- a/main/desktop/readme.md
+++ b/main/desktop/readme.md
@@ -58,3 +58,17 @@
 
 - **App launchers** (swriter/scalc/sdraw/simpress/sbase/smath/sweb): each 
links `launcher.cxx` +
   `<app>.cxx`, uses `UNICODE`/`_UNICODE`, links only `shell32.lib`.
+
+- **RSC resource libraries — THREE separate `.res`, not one**: the desktop 
module's strings are
+  loaded at runtime by `ResMgr::CreateResMgr("<name>")` → `<name>en-US.res`, 
so each ResMgr name
+  needs its own `.res` file. Upstream builds three (`util/makefile.mk` → `dkt`,
+  `source/deployment/makefile.mk` → `deployment`, 
`source/deployment/gui/makefile.mk` →
+  `deploymentgui`). The three `rsc_res` targets are `:desktop_res` (→ 
`dkten-US.res`,
+  app `desktop.src` + migration `wizard.src`), `:deployment_res` (→ 
`deploymenten-US.res`,
+  registry/manager/misc/unopkg `.src`, gui excluded) and `:deploymentgui_res`
+  (→ `deploymentguien-US.res`, the `dp_gui_*.src` Extension Manager dialogs). 
`hdrs`/`includes`/
+  `images` are shared (a strict partition of the same inputs).
+  HISTORY: a single `glob(["source/**/*.src"])` once merged everything into 
one `.res` staged as
+  both `dkten-US` and `deploymenten-US`, so `deploymentguien-US.res` never 
existed →
+  `ResMgr::CreateResMgr("deploymentgui")` returned NULL → 
`DeploymentGuiResMgr::get()` NULL-deref
+  in `ResMgr::GetResource` (`[eax+20h]`, eax=0) the instant Extension Manager 
opened.
diff --git a/main/staging/BUILD.bazel b/main/staging/BUILD.bazel
index 59b69442f6..e7f2c1d6c8 100644
--- a/main/staging/BUILD.bazel
+++ b/main/staging/BUILD.bazel
@@ -422,6 +422,7 @@ res_stage(
         "//main/dbaccess:dbui_res":                    "dbuien-US",
         "//main/desktop:desktop_res":                  "dkten-US",
         "//main/desktop:deployment_res":               "deploymenten-US",
+        "//main/desktop:deploymentgui_res":            "deploymentguien-US",
         "//main/editeng:editeng_res":                  "editengen-US",
         "//main/extensions:bib_res":                   "biben-US",
         "//main/extensions:dbp_res":                   "dbpen-US",

Reply via email to