Index: intltool-merge.in.in
===================================================================
RCS file: /cvs/gnome/intltool/intltool-merge.in.in,v
retrieving revision 1.88
diff -u -r1.88 intltool-merge.in.in
--- intltool-merge.in.in	7 Jan 2004 20:57:58 -0000	1.88
+++ intltool-merge.in.in	11 Jan 2004 12:52:47 -0000
@@ -834,7 +834,11 @@
                 # Push the tag on the stack, it will get handled when the ARRAY
                 # for this tag is processed.
                 #
-                push(@tag_stack, $temp_tag);
+                if ($temp_tag=~m/^\w/) {
+                    push(@tag_stack, $temp_tag);
+                } else {
+                    print $fh $sub;
+                }
 
             } else {
 
@@ -932,7 +936,16 @@
     my $xp = new XML::Parser(Style => 'Tree');
     $xp->setHandlers(Char => \&intltool_tree_char);
     $xp->setHandlers(Start => \&intltool_tree_start);
-    my $tree = $xp->parsefile($filename);
+    my $content = '';
+    {
+        local $/ = undef;
+        open(IN, "< $filename") or die "";
+        $content = <IN>;
+        close(IN);
+    }
+    $content =~ s{(<_[^>]*>)}{$1<![CDATA[}g;
+    $content =~ s{(</_[^>]*>)}{]]>$1}g;
+    my $tree = $xp->parse($content);
 
 # <foo><head id="a">Hello <em>there</em></head><bar>Howdy<ref/></bar>do</foo>
 # would be:
