diff options
| author | Mike Buland <eichlan@xagasoft.com> | 2010-09-14 07:10:06 +0000 |
|---|---|---|
| committer | Mike Buland <eichlan@xagasoft.com> | 2010-09-14 07:10:06 +0000 |
| commit | d210c301bc3e8867cad883e80663208474cc1ea5 (patch) | |
| tree | cf79adc2952c20dfc5c8c051b3a0d907c4f7d9c7 /src | |
| parent | 29ab73673e547abd20fc1a98e6ae642b11952808 (diff) | |
| download | libbu++-d210c301bc3e8867cad883e80663208474cc1ea5.tar.gz libbu++-d210c301bc3e8867cad883e80663208474cc1ea5.tar.bz2 libbu++-d210c301bc3e8867cad883e80663208474cc1ea5.tar.xz libbu++-d210c301bc3e8867cad883e80663208474cc1ea5.zip | |
Quite exciting, really. That lurking myriad bug has been found, it was not
forcing a header update when a stream changed size, but did not require
additional blocks to be linked in. Kind of strange, but it's fixed now.
A little more testing and I think it'll be ready.
Diffstat (limited to '')
| -rw-r--r-- | src/archive.cpp | 9 | ||||
| -rw-r--r-- | src/myriad.cpp | 5 | ||||
| -rw-r--r-- | src/myriad.h | 2 | ||||
| -rw-r--r-- | src/myriadstream.cpp | 12 |
4 files changed, 23 insertions, 5 deletions
diff --git a/src/archive.cpp b/src/archive.cpp index f29895c..69d4a0c 100644 --- a/src/archive.cpp +++ b/src/archive.cpp | |||
| @@ -9,6 +9,8 @@ | |||
| 9 | #include "bu/stream.h" | 9 | #include "bu/stream.h" |
| 10 | #include "bu/archival.h" | 10 | #include "bu/archival.h" |
| 11 | 11 | ||
| 12 | #include "bu/sio.h" | ||
| 13 | |||
| 12 | Bu::Archive::Archive( Stream &rStream, bool bLoading ) : | 14 | Bu::Archive::Archive( Stream &rStream, bool bLoading ) : |
| 13 | bLoading( bLoading ), | 15 | bLoading( bLoading ), |
| 14 | rStream( rStream ), | 16 | rStream( rStream ), |
| @@ -24,8 +26,13 @@ void Bu::Archive::write( const void *pData, int32_t nSize ) | |||
| 24 | { | 26 | { |
| 25 | if( nSize == 0 || pData == NULL ) | 27 | if( nSize == 0 || pData == NULL ) |
| 26 | return; | 28 | return; |
| 27 | 29 | ||
| 30 | // Bu::sio << "Writing starting at pos: " << rStream.tell() << " - " | ||
| 31 | // << Bu::sio.flush; | ||
| 32 | |||
| 28 | rStream.write( (const char *)pData, nSize ); | 33 | rStream.write( (const char *)pData, nSize ); |
| 34 | // | ||
| 35 | // Bu::sio << rStream.tell() << " (" << nSize << "b)" << Bu::sio.nl; | ||
| 29 | } | 36 | } |
| 30 | 37 | ||
| 31 | void Bu::Archive::read( void *pData, int32_t nSize ) | 38 | void Bu::Archive::read( void *pData, int32_t nSize ) |
diff --git a/src/myriad.cpp b/src/myriad.cpp index bfb2ccc..8650a1c 100644 --- a/src/myriad.cpp +++ b/src/myriad.cpp | |||
| @@ -593,6 +593,11 @@ void Bu::Myriad::setStreamSize( Stream *pStream, long iSize ) | |||
| 593 | } | 593 | } |
| 594 | } | 594 | } |
| 595 | 595 | ||
| 596 | void Bu::Myriad::headerChanged() | ||
| 597 | { | ||
| 598 | bHeaderChanged = true; | ||
| 599 | } | ||
| 600 | |||
| 596 | bool Bu::Myriad::isMyriad( Bu::Stream &sStore ) | 601 | bool Bu::Myriad::isMyriad( Bu::Stream &sStore ) |
| 597 | { | 602 | { |
| 598 | sStore.setPos( 0 ); | 603 | sStore.setPos( 0 ); |
diff --git a/src/myriad.h b/src/myriad.h index 53a42b8..84f273e 100644 --- a/src/myriad.h +++ b/src/myriad.h | |||
| @@ -198,6 +198,8 @@ namespace Bu | |||
| 198 | int streamAddBlock( Stream *pStream ); | 198 | int streamAddBlock( Stream *pStream ); |
| 199 | void setStreamSize( Stream *pStream, long iSize ); | 199 | void setStreamSize( Stream *pStream, long iSize ); |
| 200 | 200 | ||
| 201 | void headerChanged(); | ||
| 202 | |||
| 201 | private: | 203 | private: |
| 202 | Bu::Stream &sStore; | 204 | Bu::Stream &sStore; |
| 203 | int iBlockSize; | 205 | int iBlockSize; |
diff --git a/src/myriadstream.cpp b/src/myriadstream.cpp index 6623b2b..74dca04 100644 --- a/src/myriadstream.cpp +++ b/src/myriadstream.cpp | |||
| @@ -6,15 +6,18 @@ | |||
| 6 | */ | 6 | */ |
| 7 | 7 | ||
| 8 | #include "bu/myriadstream.h" | 8 | #include "bu/myriadstream.h" |
| 9 | #include "bu/sio.h" | ||
| 10 | |||
| 11 | using Bu::sio; | ||
| 12 | using Bu::Fmt; | ||
| 13 | 9 | ||
| 14 | #include <string.h> | 10 | #include <string.h> |
| 15 | 11 | ||
| 16 | // #define MYRIAD_STREAM_DEBUG 1 | 12 | // #define MYRIAD_STREAM_DEBUG 1 |
| 17 | 13 | ||
| 14 | #ifdef MYRIAD_STREAM_DEBUG | ||
| 15 | #include "bu/sio.h" | ||
| 16 | |||
| 17 | using Bu::sio; | ||
| 18 | using Bu::Fmt; | ||
| 19 | #endif | ||
| 20 | |||
| 18 | Bu::MyriadStream::MyriadStream( Bu::Myriad &rMyriad, | 21 | Bu::MyriadStream::MyriadStream( Bu::Myriad &rMyriad, |
| 19 | Bu::Myriad::Stream *pStream ) : | 22 | Bu::Myriad::Stream *pStream ) : |
| 20 | rMyriad( rMyriad ), | 23 | rMyriad( rMyriad ), |
| @@ -203,6 +206,7 @@ size_t Bu::MyriadStream::write( const void *pBuf, size_t nBytes ) | |||
| 203 | ); | 206 | ); |
| 204 | iPos += iAmnt; | 207 | iPos += iAmnt; |
| 205 | pStream->iSize += iAmnt; | 208 | pStream->iSize += iAmnt; |
| 209 | rMyriad.headerChanged(); | ||
| 206 | pBuf = &((char *)pBuf)[iAmnt]; | 210 | pBuf = &((char *)pBuf)[iAmnt]; |
| 207 | iLeft -= iAmnt; | 211 | iLeft -= iAmnt; |
| 208 | } | 212 | } |
