mirror of
git://slackware.nl/current.git
synced 2024-12-27 09:59:16 +01:00
34fc45cc56
a/xfsprogs-6.11.0-x86_64-1.txz: Upgraded. ap/itstool-2.0.7-x86_64-3.txz: Rebuilt. [PATCH] Fix handling of untranslated nodes. Thanks to Willy Sudiarto Raharjo. l/elfutils-0.192-x86_64-1.txz: Upgraded. l/libuv-1.49.2-x86_64-1.txz: Upgraded. xfce/elementary-xfce-0.20-noarch-1.txz: Upgraded.
31 lines
1.2 KiB
Diff
31 lines
1.2 KiB
Diff
From e9b053be5c50c2bd69442a8484a4c9c371bc3a45 Mon Sep 17 00:00:00 2001
|
|
From: Harald van Dijk <harald@gigawatt.nl>
|
|
Date: Thu, 15 Jun 2023 23:18:11 +0100
|
|
Subject: [PATCH] Fix handling of untranslated nodes
|
|
|
|
If a translation is missing, get_translated returns the node it was
|
|
called with. But ph_node when passed to get_translated is part of
|
|
another document and cannot just be reparented, it needs to be cloned.
|
|
The reparenting leaves things in an inconsistent state where references
|
|
intended to refer to nodes in the original document no longer do so, and
|
|
they may then be accessed from those references after the new document
|
|
has already been freed.
|
|
|
|
Fixes bug #36.
|
|
---
|
|
itstool.in | 2 ++
|
|
1 file changed, 2 insertions(+)
|
|
|
|
diff --git a/itstool.in b/itstool.in
|
|
index c21ad4b..a948828 100755
|
|
--- a/itstool.in
|
|
+++ b/itstool.in
|
|
@@ -1096,6 +1096,8 @@ class Document (object):
|
|
child.replaceNode(newnode)
|
|
else:
|
|
repl = self.get_translated(ph_node, translations, strict=strict, lang=lang)
|
|
+ if repl == ph_node:
|
|
+ repl = repl.copyNode(1)
|
|
child.replaceNode(repl)
|
|
scan_node(child)
|
|
try:
|