Fix a bug in psql. unescape() does not work for multi-byte encodings.
authorTatsuo Ishii
Sat, 17 Feb 2001 10:03:33 +0000 (10:03 +0000)
committerTatsuo Ishii
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;
        }
    }