X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=reader.cc;h=ffca53deacab5f2a2cfa280b6107ee0e5b23371a;hb=4016b9a7f02803e28582abb02cd410dcb5021fe6;hp=14b3b0c605ae4d52bfebff1c371f52d8139f2146;hpb=75b3c194e9b084d81f69759d7de71d60f3fde3e1;p=odcread.git diff --git a/reader.cc b/reader.cc index 14b3b0c..ffca53d 100644 --- a/reader.cc +++ b/reader.cc @@ -24,16 +24,20 @@ CHAR Reader::readLChar() { char *bufPtr = (char *)&buf; d_rider.read(bufPtr, 2); if (isLittleEndian()) { - return buf; + return buf - 0x8000; } else { CHAR out; char *outPtr = (char *)&out; outPtr[0] = bufPtr[1]; outPtr[1] = bufPtr[0]; - return out; + return out - 0x8000; } } void Reader::readLChar(CHAR *buf, size_t len) { + for (int i = 0; i < len; ++i) { + buf[i] = readLChar(); + } + /* char *bufPtr = (char *)buf; int len2 = len * 2; d_rider.read(bufPtr, len2); @@ -45,6 +49,7 @@ void Reader::readLChar(CHAR *buf, size_t len) { bufPtr[i + 1] = tmp; } } + */ } BYTE Reader::readByte() { @@ -235,8 +240,6 @@ Store *Reader::readStoreOrElemStore(bool isElem) { d_store = x; } else { // join(d_store, x) - // I have no idea what this would actually mean if it happened. - throw "Joining of stores not implemented"; } if (isElem) { d_elemList.push_back(x); @@ -251,8 +254,6 @@ Store *Reader::readStoreOrElemStore(bool isElem) { d_store = alien; } else { // join(d_store, alien) - // I have no idea what this would actually mean if it happened. - throw "Joining of stores not implemented"; } if (isElem) { d_elemList.push_back(alien);