summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/tags.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/tags.cc')
-rw-r--r--crawl-ref/source/tags.cc9
1 files changed, 5 insertions, 4 deletions
diff --git a/crawl-ref/source/tags.cc b/crawl-ref/source/tags.cc
index 5748975294..cc0e1648d9 100644
--- a/crawl-ref/source/tags.cc
+++ b/crawl-ref/source/tags.cc
@@ -374,7 +374,7 @@ void marshallString(struct tagHeader &th, const std::string &data, int maxSize)
}
// string -- unmarshall length & string data
-void unmarshallCString(struct tagHeader &th, char *data, int maxSize)
+int unmarshallCString(struct tagHeader &th, char *data, int maxSize)
{
// get length
short len = unmarshallShort(th);
@@ -388,6 +388,8 @@ void unmarshallCString(struct tagHeader &th, char *data, int maxSize)
data[copylen] = 0;
th.offset += len;
+
+ return (copylen);
}
std::string unmarshallString(tagHeader &th, int maxSize)
@@ -398,10 +400,9 @@ std::string unmarshallString(tagHeader &th, int maxSize)
if (!buffer)
return ("");
*buffer = 0;
- unmarshallCString(th, buffer, maxSize);
- const std::string res = buffer;
+ const int slen = unmarshallCString(th, buffer, maxSize);
+ const std::string res(buffer, slen);
delete [] buffer;
-
return (res);
}