diff options
-rw-r--r-- | libical/ChangeLog | 6 | ||||
-rw-r--r-- | libical/src/libical/icalvalue.c | 40 |
2 files changed, 34 insertions, 12 deletions
diff --git a/libical/ChangeLog b/libical/ChangeLog index 054ed73e74..88e2a0cfd0 100644 --- a/libical/ChangeLog +++ b/libical/ChangeLog @@ -1,3 +1,9 @@ +2001-08-16 Federico Mena Quintero <federico@ximian.com> + + * src/libical/icalvalue.c (icalmemory_strdup_and_dequote): Dequote + the same characters that we know how to quote in + icalvalue_text_as_ical_string(). Fixes Ximian bug #7433. + 2001-08-01 Damon Chaplin <damon@ximian.com> * src/libical/icaltimezone.c: removed some debugging messages. diff --git a/libical/src/libical/icalvalue.c b/libical/src/libical/icalvalue.c index 8c5c1303ea..459bebe830 100644 --- a/libical/src/libical/icalvalue.c +++ b/libical/src/libical/icalvalue.c @@ -181,18 +181,39 @@ char* icalmemory_strdup_and_dequote(const char* str) } case 'n': + case 'N': { *pout = '\n'; break; } - case 'N': + case 't': + case 'T': { - *pout = '\n'; + *pout = '\t'; + break; + } + case 'r': + case 'R': + { + *pout = '\r'; + break; + } + case 'b': + case 'B': + { + *pout = '\b'; + break; + } + case 'f': + case 'F': + { + *pout = '\f'; break; } - case '\\': - case ',': case ';': + case ',': + case '"': + case '\\': { *pout = *p; break; @@ -665,14 +686,9 @@ char* icalvalue_text_as_ical_string(icalvalue* value) { } case ';': - case ',':{ - icalmemory_append_char(&str,&str_p,&buf_sz,'\\'); - icalmemory_append_char(&str,&str_p,&buf_sz,*p); - line_length+=3; - break; - } - - case '"':{ + case ',': + case '"': + case '\\':{ icalmemory_append_char(&str,&str_p,&buf_sz,'\\'); icalmemory_append_char(&str,&str_p,&buf_sz,*p); line_length+=3; |