std::vector<void*> crashes gcc 991026, so I switched to a vector of stream serialno, and use the stream serialno through the serial->OggStream* map to get back the OggStream * cookie for AllocateCookie. (whew!) casting the pointer to int probably would work too but this solution seems less hackish.

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6308 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
shatty
2004-01-26 00:22:56 +00:00
parent 9806a571a3
commit 992d3cc594
2 changed files with 4 additions and 4 deletions
@@ -136,7 +136,7 @@ retry:
} }
}; };
fStreams[serialno] = OggStream::makeOggStream(new Interface(this, serialno), serialno, packet); fStreams[serialno] = OggStream::makeOggStream(new Interface(this, serialno), serialno, packet);
fCookies.push_back(fStreams[serialno]); fCookies.push_back(serialno);
} }
return fStreams[serialno]->AddPage(position,page); return fStreams[serialno]->AddPage(position,page);
} }
@@ -292,7 +292,7 @@ OggReader::AllocateCookie(int32 streamNumber, void **cookie)
TRACE("OggReader::AllocateCookie: invalid streamNumber: bail\n"); TRACE("OggReader::AllocateCookie: invalid streamNumber: bail\n");
return B_ERROR; return B_ERROR;
} }
OggStream * stream = fCookies[streamNumber]; OggStream * stream = fStreams[fCookies[streamNumber]];
// store the cookie // store the cookie
*cookie = stream; *cookie = stream;
return B_OK; return B_OK;
@@ -11,7 +11,7 @@ namespace BPrivate { namespace media {
class OggStream; class OggStream;
typedef std::map<long,OggStream*> serialno_OggStream_map; typedef std::map<long,OggStream*> serialno_OggStream_map;
typedef std::vector<OggStream*> OggStream_vector; typedef std::vector<long> serialno_vector;
class OggReader : public Reader class OggReader : public Reader
{ {
@@ -47,7 +47,7 @@ protected:
ogg_sync_state fSync; ogg_sync_state fSync;
serialno_OggStream_map fStreams; serialno_OggStream_map fStreams;
OggStream_vector fCookies; serialno_vector fCookies;
BPositionIO * fSeekable; BPositionIO * fSeekable;
private: private: