From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20676 invoked by alias); 26 Nov 2014 04:36:08 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 20642 invoked by uid 89); 26 Nov 2014 04:36:08 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.2 required=5.0 tests=BAYES_00,SPF_SOFTFAIL autolearn=no version=3.3.2 X-HELO: smtp.electronicbox.net Received: from smtp.electronicbox.net (HELO smtp.electronicbox.net) (96.127.255.82) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 26 Nov 2014 04:36:05 +0000 Received: from simark.localdomain (unknown [96.127.221.218]) by smtp.electronicbox.net (Postfix) with ESMTP id BEA57DF37E; Tue, 25 Nov 2014 23:31:28 -0500 (EST) From: Simon Marchi To: gdb-patches@sourceware.org Cc: simon.marchi@polymtl.ca, Simon Marchi Subject: [PATCH 1/3] python extended prompt: Use os.getcwd() instead of os.getcwdu() Date: Wed, 26 Nov 2014 04:36:00 -0000 Message-Id: <1416976561-1927-1-git-send-email-simon.marchi@ericsson.com> X-IsSubscribed: yes X-SW-Source: 2014-11/txt/msg00644.txt.bz2 It seems like using os.getcwdu() here is wrong both for Python 2 and Python 3. For Python 2, this returns a 'unicode' object, which tries to get concatenated to a 'str' object in substitute_prompt. The implicit conversion works when the unicode string contains no accent. When it does contain an accent though, displaying the prompt results in the following error: (gdb) set extended-prompt \w ... File "/home/simark/build/binutils-gdb-python2/gdb/data-directory/python/gdb/prompt.py", line 138, in substitute_prompt result += str(cmd(arg)) UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 49: ordinal not in range(128) When using os.getcwd() instead, it works correctly. I suppose that Python does the necessary decoding internally. For Python 3, this method simply does not exist. It works fine with os.getcwd(). gdb/ChangeLog: * python/lib/gdb/prompt.py (_prompt_pwd): Use os.getcwd() instead of os.getcwdu(). --- gdb/python/lib/gdb/prompt.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gdb/python/lib/gdb/prompt.py b/gdb/python/lib/gdb/prompt.py index d99f2ea..04adbfb 100644 --- a/gdb/python/lib/gdb/prompt.py +++ b/gdb/python/lib/gdb/prompt.py @@ -21,7 +21,7 @@ import os def _prompt_pwd(ignore): "The current working directory." - return os.getcwdu() + return os.getcwd() def _prompt_object_attr(func, what, attr, nattr): """Internal worker for fetching GDB attributes.""" -- 2.1.3