From 7ab1219ea3c139bd96c73752986ca487c743b9f8 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Tue, 27 May 2008 16:32:17 +0000 Subject: [PATCH] Added handling of \ within srings by using \\ --- src/osgDB/FieldReader.cpp | 28 +++++++++++++++++++++++----- src/osgDB/Output.cpp | 7 ++++++- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/osgDB/FieldReader.cpp b/src/osgDB/FieldReader.cpp index 1e77fe81e..6e2aed7e8 100644 --- a/src/osgDB/FieldReader.cpp +++ b/src/osgDB/FieldReader.cpp @@ -184,10 +184,19 @@ bool FieldReader::_readField(Field* fieldPtr) return fieldPtr && fieldPtr->getNoCharacters()!=0; } c = ch; - if (ch=='\\' && !escape) + if (ch=='\\') { - escape = true; - _fin->ignore(1); + if (escape) + { + escape = false; + _fin->get(c); + if (fieldPtr) fieldPtr->addChar(c); + } + else + { + escape = true; + _fin->ignore(1); + } } else if (ch=='"') { @@ -237,8 +246,17 @@ bool FieldReader::_readField(Field* fieldPtr) c = ch; if (ch=='\\' && !escape) { - escape = true; - _fin->ignore(1); + if (escape) + { + escape = false; + _fin->get(c); + if (fieldPtr) fieldPtr->addChar(c); + } + else + { + escape = true; + _fin->ignore(1); + } } else if (ch=='\'') { diff --git a/src/osgDB/Output.cpp b/src/osgDB/Output.cpp index 279df61d7..49e093fd3 100644 --- a/src/osgDB/Output.cpp +++ b/src/osgDB/Output.cpp @@ -111,7 +111,12 @@ std::string Output::wrapString(const std::string& str) newstring += '"'; for(unsigned int i=0;i