summaryrefslogtreecommitdiff
path: root/xmlreader
diff options
context:
space:
mode:
Diffstat (limited to 'xmlreader')
-rw-r--r--xmlreader/source/pad.cxx25
1 files changed, 14 insertions, 11 deletions
diff --git a/xmlreader/source/pad.cxx b/xmlreader/source/pad.cxx
index ce45f805f496..74bb5ec63fb0 100644
--- a/xmlreader/source/pad.cxx
+++ b/xmlreader/source/pad.cxx
@@ -29,46 +29,49 @@ namespace xmlreader {
void Pad::add(char const * begin, sal_Int32 length) {
assert(
- begin != nullptr && length >= 0 && !(span_.is() && buffer_.getLength() != 0));
+ begin != nullptr && length >= 0 && !(span_.is() && buflength_ != 0));
if (length != 0) {
flushSpan();
- if (buffer_.isEmpty()) {
+ if (buflength_ == 0) {
span_ = Span(begin, length);
} else {
- buffer_.append(begin, length);
+ memcpy(buffer_ + buflength_, begin, length);
+ buflength_ += length;
}
}
}
void Pad::addEphemeral(char const * begin, sal_Int32 length) {
assert(
- begin != nullptr && length >= 0 && !(span_.is() && buffer_.getLength() != 0));
+ begin != nullptr && length >= 0 && !(span_.is() && buflength_ != 0));
if (length != 0) {
flushSpan();
- buffer_.append(begin, length);
+ memcpy(buffer_ + buflength_, begin, length);
+ buflength_ += length;
}
}
void Pad::clear() {
- assert(!(span_.is() && buffer_.getLength() != 0));
+ assert(!(span_.is() && buflength_ != 0));
span_.clear();
- buffer_.setLength(0);
+ buflength_ = 0;
}
Span Pad::get() const {
- assert(!(span_.is() && buffer_.getLength() != 0));
+ assert(!(span_.is() && buflength_ != 0));
if (span_.is()) {
return span_;
- } else if (buffer_.isEmpty()) {
+ } else if (buflength_ == 0) {
return Span("");
} else {
- return Span(buffer_.getStr(), buffer_.getLength());
+ return Span(buffer_, buflength_);
}
}
void Pad::flushSpan() {
if (span_.is()) {
- buffer_.append(span_.begin, span_.length);
+ memcpy(buffer_ + buflength_, span_.begin, span_.length);
+ buflength_ += span_.length;
span_.clear();
}
}