Subject: bug#15033: closed (Re: bug#15033: [PATCH] Fix display of symbols containing backslashes)

From: [email-masked] (GNU bug Tracking System)
Date: Tue, 06 Aug 2013 22:05:03 +0000

Your bug report

#15033: [PATCH] Fix display of symbols containing backslashes

which was filed against the guile package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
15033: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=15033
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#15033: [PATCH] Fix display of symbols containing backslashes
From: Mark H Weaver <[email-masked]>
To: David Kastrup <[email-masked]>
Cc: [email-masked]
Date: Tue, 06 Aug 2013 18:04:18 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

David Kastrup <[email-masked]> writes:

> Symbols printed with `#{...#}' notation need to double backslashes when
> displaying as they serve as escape characters when reading.  The
> behavior before this patch is clearly erroneous:
>
> GNU Guile 2.0.7
> [...]
> scheme@(guile-user)> (string->symbol "\\(")
> $1 = #{\\x28;}#
> scheme@(guile-user)> (symbol->string '#{\\x28;}#)
> $2 = "\\x28;"
> ---
>  libguile/print.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/libguile/print.c b/libguile/print.c
> index 50f5a3e..bb7fd84 100644
> --- a/libguile/print.c
> +++ b/libguile/print.c
> @@ -448,7 +448,8 @@ print_extended_symbol (SCM sym, SCM port)
>                                              SUBSEQUENT_IDENTIFIER_MASK
>                                              | UC_CATEGORY_MASK_Zs))
>          {
> -          if (!display_character (c, port, strategy))
> +          if (!display_character (c, port, strategy)
> +	      || (c == '\\' && !display_character (c, port, strategy)))
>              scm_encoding_error ("print_extended_symbol", errno,
>                                  "cannot convert to output locale",
>                                  port, SCM_MAKE_CHAR (c));

Applied in b4a099883d20d7852c95acf07ab6cbc56bce18c4.

     Thanks!
       Mark

Subject: [PATCH] Fix display of symbols containing backslashes
From: David Kastrup <[email-masked]>
To: [email-masked]
Cc: David Kastrup <[email-masked]>
Date: Tue, 6 Aug 2013 15:44:08 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Symbols printed with `#{...#}' notation need to double backslashes when
displaying as they serve as escape characters when reading.  The
behavior before this patch is clearly erroneous:

GNU Guile 2.0.7
[...]
scheme@(guile-user)> (string->symbol "\\(")
$1 = #{\\x28;}#
scheme@(guile-user)> (symbol->string '#{\\x28;}#)
$2 = "\\x28;"
---
 libguile/print.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libguile/print.c b/libguile/print.c
index 50f5a3e..bb7fd84 100644
--- a/libguile/print.c
+++ b/libguile/print.c
@@ -448,7 +448,8 @@ print_extended_symbol (SCM sym, SCM port)
                                             SUBSEQUENT_IDENTIFIER_MASK
                                             | UC_CATEGORY_MASK_Zs))
         {
-          if (!display_character (c, port, strategy))
+          if (!display_character (c, port, strategy)
+	      || (c == '\\' && !display_character (c, port, strategy)))
             scm_encoding_error ("print_extended_symbol", errno,
                                 "cannot convert to output locale",
                                 port, SCM_MAKE_CHAR (c));
-- 
1.8.1.2