]> granicus.if.org Git - postgresql/commitdiff
Fix a bug in psql. unescape() does not work for multi-byte encodings.
authorTatsuo Ishii <ishii@postgresql.org>
Sat, 17 Feb 2001 10:03:33 +0000 (10:03 +0000)
committerTatsuo Ishii <ishii@postgresql.org>
Sat, 17 Feb 2001 10:03:33 +0000 (10:03 +0000)
src/bin/psql/command.c

index 34a05fa6b1c8d3c7820b38793352cb0f0ca13fa1..a81f222f39dbde6eca74bf378ed3f7bc410307dc 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2000 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/psql/command.c,v 1.46 2001/02/10 02:31:27 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/command.c,v 1.47 2001/02/17 10:03:33 ishii Exp $
  */
 #include "postgres_fe.h"
 #include "command.h"
@@ -494,7 +494,7 @@ exec_command(const char *cmd,
                                success = false;
                        }
                        else
-                               success = do_lo_import(opt1, opt2);
+                           success = do_lo_import(opt1, opt2);
                }
 
                else if (strcmp(cmd + 3, "list") == 0)
@@ -1166,7 +1166,13 @@ unescape(const unsigned char *source, size_t len)
 
                else
                {
-                       *tmp++ = *p;
+                       int     i;
+                       const unsigned char     *mp = p;
+
+                       for (i = 0;i < PQmblen(p, pset.encoding);i++)
+                       {
+                           *tmp++ = *mp++;
+                       }
                        esc = false;
                }
        }