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

pull/207/head
Ludovic Marcotte 2016-04-14 15:21:49 -04:00
parent 4d52b7d2b5
commit 4ec0615bcd
3 changed files with 15 additions and 4 deletions

View File

@ -62,7 +62,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

@ -319,7 +319,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.
@ -330,7 +333,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;
@ -379,7 +383,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) {