From 17afe7c0777e202578e13e94831057a1ec54ef6e Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 15 Mar 2016 10:38:38 -0400 Subject: [PATCH] (fix) avoid escaping values that are quoted (fixes #3296) --- SOPE/NGCards/NSDictionary+NGCards.m | 4 ++-- Tests/Unit/TestVersit.m | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/SOPE/NGCards/NSDictionary+NGCards.m b/SOPE/NGCards/NSDictionary+NGCards.m index 109db067c..44d439bcb 100644 --- a/SOPE/NGCards/NSDictionary+NGCards.m +++ b/SOPE/NGCards/NSDictionary+NGCards.m @@ -53,10 +53,10 @@ [aString appendString: @","]; subValue = [self objectAtIndex: count]; - /* We MUST quote attribute values that have a ":" in them + /* We MUST quote attribute values that have a ":" or "," in them and that not already quoted */ if (asAttributes && [subValue length] > 2 - && [subValue rangeOfString: @":"].length + && ([subValue rangeOfString: @":"].length || [subValue rangeOfString: @","].length) && [subValue characterAtIndex: 0] != '"' && ![subValue hasSuffix: @"\""]) subValue = [NSString stringWithFormat: @"\"%@\"", subValue]; diff --git a/Tests/Unit/TestVersit.m b/Tests/Unit/TestVersit.m index e09dce49f..4c22ff639 100644 --- a/Tests/Unit/TestVersit.m +++ b/Tests/Unit/TestVersit.m @@ -206,7 +206,7 @@ testEquals([element value: 0 ofAttribute: @"param1"], @"paramvalue1"); testEquals([element value: 1 ofAttribute: @"param1"], @"paramvalue2"); - versit = @"BEGIN:GROUP1\r\nELEMENT;PARAM1=paramvalue1\\, with comma:value\r\nEND:GROUP1"; + versit = @"BEGIN:GROUP1\r\nELEMENT;PARAM1=\"paramvalue1, with comma\":value\r\nEND:GROUP1"; group = [CardGroup parseSingleFromSource: versit]; testEquals([group versitString], versit); element = [group firstChildWithTag: @"element"];