From 5cda1d7c90f7ac2a1d8a851edbe426f07a032946 Mon Sep 17 00:00:00 2001 From: truebrain Date: Mon, 19 Dec 2011 20:50:44 +0000 Subject: (svn r23603) -Add: support for control commands in strings, in both network and safe/load (Rubidium) --- src/saveload/saveload.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/saveload/saveload.cpp') diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index 55fabe77b..b1655512b 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -1089,7 +1089,14 @@ static void SlString(void *ptr, size_t length, VarType conv) } ((char *)ptr)[len] = '\0'; // properly terminate the string - str_validate((char *)ptr, (char *)ptr + len); + StringValidationSettings settings = SVS_REPLACE_WITH_QUESTION_MARK; + if ((conv & SLF_ALLOW_CONTROL) != 0) { + settings = settings | SVS_ALLOW_CONTROL_CODE; + } + if ((conv & SLF_ALLOW_NEWLINE) != 0) { + settings = settings | SVS_ALLOW_NEWLINE; + } + str_validate((char *)ptr, (char *)ptr + len, settings); break; } case SLA_PTRS: break; @@ -1442,7 +1449,7 @@ bool SlObjectMember(void *ptr, const SaveLoad *sld) } break; case SL_ARR: SlArray(ptr, sld->length, conv); break; - case SL_STR: SlString(ptr, sld->length, conv); break; + case SL_STR: SlString(ptr, sld->length, sld->conv); break; case SL_LST: SlList(ptr, (SLRefType)conv); break; default: NOT_REACHED(); } -- cgit v1.2.3-70-g09d2