(fix) encore CR for EAS (fixes #3626)

pull/215/head
Ludovic Marcotte 2016-04-14 15:21:49 -04:00
parent 8d166dd80c
commit 012ac98b31
3 changed files with 15 additions and 4 deletions

View File

@ -65,7 +65,7 @@ static NSArray *easCommandParameters = nil;
- (NSString *) activeSyncRepresentationInContext: (WOContext *) context
{
return [self safeStringByEscapingXMLString];
return [self safeStringByEscapingXMLString: YES];
}
- (int) activeSyncFolderType

View File

@ -55,6 +55,7 @@
/* Unicode safety */
- (NSString *) safeString;
- (NSString *) safeStringByEscapingXMLString;
- (NSString *) safeStringByEscapingXMLString: (BOOL) encodeCR;
/* JSON */
- (NSString *) jsonRepresentation;

View File

@ -324,7 +324,10 @@ static int cssEscapingCount;
return AUTORELEASE(s);
}
- (NSString *) safeStringByEscapingXMLString
{
return [self safeStringByEscapingXMLString: NO];
}
//
// This is a copy from NSString+XMLEscaping.m from SOPE.
// The difference here is that we use wchar_t instead of unichar.
@ -335,7 +338,8 @@ static int cssEscapingCount;
// We avoid naming it like the one in SOPE since if the ActiveSync
// bundle is loaded, it'll overwrite the one provided by SOPE.
//
- (NSString *) safeStringByEscapingXMLString {
- (NSString *) safeStringByEscapingXMLString: (BOOL) encoreCR
{
register unsigned i, len, j;
register wchar_t *buf;
const wchar_t *chars;
@ -384,7 +388,13 @@ static int cssEscapingCount;
buf[j] = '&'; j++; buf[j] = 'g'; j++; buf[j] = 't'; j++;
buf[j] = ';'; j++;
break;
case '\r':
if (encoreCR) // falls back to default if we don't encode
{
buf[j] = '&'; j++; buf[j] = '#'; j++; buf[j] = '1'; j++;
buf[j] = '3'; j++; buf[j] = ';'; j++;
break;
}
default:
/* escape big chars */
if (chars[i] > 127) {