Bug #283223 - Don't call str() on unicode strings inside _db_escape_string(),
authorZac Medico <zmedico@gentoo.org>
Sun, 30 Aug 2009 20:05:57 +0000 (20:05 -0000)
committerZac Medico <zmedico@gentoo.org>
Sun, 30 Aug 2009 20:05:57 +0000 (20:05 -0000)
since it can trigger a UnicodeEncodeError in python-2.x.

svn path=/main/trunk/; revision=14172

pym/portage/cache/sqlite.py

index 81c07625779808820673b60b5368cf9015986905..d27a7b00678b88e5f2b5687bc7a322c732c3875c 100644 (file)
@@ -47,7 +47,11 @@ class database(fs_template.FsBased):
 
        def _db_escape_string(self, s):
                """meta escaping, returns quoted string for use in sql statements"""
-               # This is equivalent to the _quote function from pysqlite 1.1.
+        if not isinstance(s, basestring):
+            # Avoid potential UnicodeEncodeError in python-2.x by
+            # only calling str() when it's absolutely necessary.
+            s = str(s)
+        # This is equivalent to the _quote function from pysqlite 1.1.
                return "'%s'" % s.replace("'", "''")
 
        def _db_init_connection(self, config):