Fix crash when stat'ing objects with non-ascii names

This patch fixes a crash and stack trace in stat when an object
name contains non-ascii characters.

Change-Id: Ib6dc686771e593243de56cafc100b17e51d9d9d5
Closes-Bug: 1411665
This commit is contained in:
Joel Wright 2015-01-14 11:10:48 +00:00
parent 06c73c6020
commit cac21e3cff
2 changed files with 10 additions and 4 deletions

@ -84,13 +84,11 @@ class OutputManager(object):
self.print_pool.submit(self._print, msg)
def print_items(self, items, offset=DEFAULT_OFFSET, skip_missing=False):
lines = []
template = '%%%ds: %%s' % offset
for k, v in items:
if skip_missing and not v:
continue
lines.append((template % (k, v)).rstrip())
self.print_msg('\n'.join(lines))
self.print_msg((template % (k, v)).rstrip())
def error(self, msg, *fmt_args):
if fmt_args:

@ -205,6 +205,11 @@ class TestOutputManager(testtools.TestCase):
thread_manager.print_raw(
u'some raw bytes: \u062A\u062A'.encode('utf-8'))
thread_manager.print_items([
('key', u'value'),
('object', 'O\xcc\x88bject')
])
# Now we have a thread for error printing and a thread for
# normal print messages
self.assertEqual(starting_thread_count + 2,
@ -227,7 +232,10 @@ class TestOutputManager(testtools.TestCase):
self.assertEqual(''.join([
'one-argument\n',
'one fish, 88 fish\n',
'some\n', 'where\n', over_the, raw_bytes
'some\n', 'where\n',
over_the, raw_bytes,
' key: value\n',
' object: O\xcc\x88bject\n'
]), out_stream.getvalue())
first_item = u'I have 99 problems, but a \u062A\u062A is not one\n'