X-Git-Url: http://deadsoftware.ru/gitweb?p=odcread.git;a=blobdiff_plain;f=textmodel.cc;h=cfd7730256ff2d0045cfd1ed63e83e1b497a8575;hp=c02620c36c9e0dd5c97b31c493f3ebddb827eb0a;hb=a3724718862ea28a70f2c6c330cdc729451d6510;hpb=75cf4599cf50d987efa2e402243c2680640ef339 diff --git a/textmodel.cc b/textmodel.cc index c02620c..cfd7730 100644 --- a/textmodel.cc +++ b/textmodel.cc @@ -151,15 +151,16 @@ void StdTextModel::accept(Visitor &visitor) const { TextPiece::TextPiece(size_t len): d_len(len) {} -LongPiece::LongPiece(size_t len): TextPiece(len) {} +LongPiece::LongPiece(size_t len): TextPiece(len * 2) {} LongPiece::~LongPiece() { delete d_buf; } void LongPiece::read(Reader &reader) { - d_buf = new CHAR[d_len]; - reader.readLChar(d_buf, d_len); + d_buf = new CHAR[d_len / 2 + 1]; + reader.readLChar(d_buf, d_len / 2); + d_buf[d_len / 2] = 0; } std::string LongPiece::toString() const { @@ -181,16 +182,9 @@ ShortPiece::~ShortPiece() { } void ShortPiece::read(Reader &reader) { -// static char piece[] = "pieceA"; d_buf = new SHORTCHAR[d_len + 1]; reader.readSChar(d_buf, d_len); d_buf[d_len] = 0; -// std::cout.write(buf, d_len); -// std::ofstream ofs(piece, std::ios::out); -// ofs.write(buf, d_len); -// ofs.close(); -// ++piece[5]; -// delete buf; } std::string ShortPiece::toString() const { @@ -209,7 +203,11 @@ void ShortPiece::accept(Visitor &visitor) const { visitor.textShortPiece(this); } -ViewPiece::ViewPiece(Store *view): TextPiece(0), d_view(view) {} +ViewPiece::ViewPiece(Store *view): TextPiece(1), d_view(view) {} + +ViewPiece::~ViewPiece() { + delete d_view; +} void ViewPiece::read(Reader &reader) { reader.readByte();