From c41fc8bbdefa7fe0c64bea302f1fdfd3f60b5b01 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sun, 30 Aug 2009 20:05:57 +0000 Subject: 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 --- pym/portage/cache/sqlite.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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): -- cgit v1.2.3-1-g7c22