Index: ppdc-catalog.cxx
===================================================================
--- ppdc-catalog.cxx	(revision 7696)
+++ ppdc-catalog.cxx	(working copy)
@@ -205,8 +205,12 @@
     {
       if (ptr)
       {
+	int lastch = 0;
+
         if (ch == '\\')
 	{
+	  lastch = ch;
+
 	  if ((ch = get_utf16(fp, cs)) == 0)
 	    break;
 
@@ -216,7 +220,13 @@
 	    ch = '\t';
         }
 
-        put_utf8(ch, ptr, end);
+	if (ch == '\"' && lastch != '\\')
+	{
+	  *ptr = '\0';
+	  ptr = NULL;
+	}
+	else
+	  put_utf8(ch, ptr, end);
       }
       else if (ch == '/')
       {
@@ -248,13 +258,8 @@
       else if (ch == '\"')
       {
         // Start or finish quoted string...
-	if (ptr)
+	if (id[0])
 	{
-	  *ptr = '\0';
-	  ptr  = NULL;
-	}
-	else if (id[0])
-	{
 	  ptr = str;
 	  end = str + sizeof(str) - 1;
 	}
@@ -270,6 +275,9 @@
 	temp = new ppdcMessage(id, str);
 
 	messages->add(temp);
+
+	id[0] = '\0';
+	str[0] = '\0';
       }
     }
   }
