From 5162807399b41b963ae988244bbae95ff0efbac7 Mon Sep 17 00:00:00 2001 From: tomosu Date: Jun 09 2016 03:45:20 +0000 Subject: use stringstream instead og strstream (#398) --- diff --git a/toonz/sources/common/tstream/tstream.cpp b/toonz/sources/common/tstream/tstream.cpp index df277d4..e31d835 100644 --- a/toonz/sources/common/tstream/tstream.cpp +++ b/toonz/sources/common/tstream/tstream.cpp @@ -223,7 +223,7 @@ public: ostream *m_os; bool m_chanOwner; bool m_compressed; - ostrstream m_ostrstream; + ostringstream m_ostringstream; vector m_tagStack; int m_tab; @@ -244,7 +244,7 @@ TOStream::TOStream(const TFilePath &fp, bool compressed) m_imp->m_filepath = fp; if (compressed) { - m_imp->m_os = &m_imp->m_ostrstream; + m_imp->m_os = &m_imp->m_ostringstream; m_imp->m_compressed = true; m_imp->m_chanOwner = false; } else { @@ -305,7 +305,9 @@ TOStream::~TOStream() m_imp->m_justStarted = true; } else { if (m_imp->m_compressed) { - const void *in = (const void *)m_imp->m_ostrstream.str(); + std::string tmp = m_imp->m_ostringstream.str(); + const void *in = (const void *)tmp.c_str(); + size_t in_len = strlen((char *)in); size_t out_len = LZ4F_compressFrameBound(in_len, NULL); @@ -324,8 +326,6 @@ TOStream::~TOStream() v = out_len; os.write((char *)&v, sizeof v); os.write((char *)out, out_len); - - m_imp->m_ostrstream.freeze(0); } free(out); @@ -435,7 +435,7 @@ TOStream &TOStream::operator<<(std::wstring v) int len = v.length(); if(len==0) { - os << "\"" << "\"" << " "; + os << "\"" << "\"" << " "; m_imp->m_justStarted = false; return *this; } @@ -460,7 +460,7 @@ TOStream &TOStream::operator<<(std::wstring v) os << "\\n"; else if(iswprint(v[i])) os << v[i]; - else + else {os.put('\\'); os << (int)v[i];} os << "\" "; } @@ -635,7 +635,7 @@ bool TOStream::checkStatus() const } //=============================================================== -/*! +/*! This class contains TIStream's attributes. It is created by memory allocation in the TIStream's constructor. */ @@ -975,7 +975,7 @@ TIStream::TIStream(const TFilePath &fp) if (check_len != out_len) throw TException("corrupted file"); - m_imp->m_is = new istrstream((char *)out, out_len); + m_imp->m_is = new istringstream((char *)out, out_len); } m_imp->m_chanOwner = true; @@ -1317,7 +1317,7 @@ bool TIStream::getTagParam(string paramName, int &value) string svalue; if (!getTagParam(paramName, svalue)) return false; - istrstream is(svalue.c_str(), svalue.length()); + istringstream is(svalue.c_str(), svalue.length()); value = 0; is >> value; return true;