From c11d961bf3dbdb3c637d2c77cff1a74b02629e68 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 c0e57ace7..22ce351da 100644 --- a/SOPE/NGCards/NSDictionary+NGCards.m +++ b/SOPE/NGCards/NSDictionary+NGCards.m @@ -51,10 +51,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 fb13b5c2c..17312eb63 100644 --- a/Tests/Unit/TestVersit.m +++ b/Tests/Unit/TestVersit.m @@ -204,7 +204,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"];