From: Zac Medico Date: Sun, 30 Aug 2009 20:05:57 +0000 (-0000) Subject: Bug #283223 - Don't call str() on unicode strings inside _db_escape_string(), X-Git-Tag: v2.2_rc41~86 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=c41fc8bbdefa7fe0c64bea302f1fdfd3f60b5b01;p=portage.git Bug #283223 - Don't call str() on unicode strings inside _db_escape_string(), since it can trigger a UnicodeEncodeError in python-2.x. svn path=/main/trunk/; revision=14172 --- diff --git a/pym/portage/cache/sqlite.py b/pym/portage/cache/sqlite.py index 81c076257..d27a7b006 100644 --- a/pym/portage/cache/sqlite.py +++ b/pym/portage/cache/sqlite.py @@ -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):