From 92f86e0a9cd5a44636056901a498e047ae756a8b Mon Sep 17 00:00:00 2001 From: Erik Zandvliet Date: Mon, 23 Sep 2013 11:02:51 +0200 Subject: [PATCH] Fixed a bug with reading first metadata through parseNext. --- lib/dtsc.cpp | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/lib/dtsc.cpp b/lib/dtsc.cpp index 3ea91b76..8a011b67 100644 --- a/lib/dtsc.cpp +++ b/lib/dtsc.cpp @@ -843,8 +843,27 @@ void DTSC::File::parseNext(){ return; } if (memcmp(buffer, DTSC::Magic_Header, 4) == 0){ - readHeader(lastreadpos); - jsonbuffer = metadata; + if (lastreadpos != 0){ + readHeader(lastreadpos); + jsonbuffer = metadata; + }else{ + if (fread(buffer, 4, 1, F) != 1){ + fprintf(stderr, "Could not read size\n"); + strbuffer = ""; + jsonbuffer.null(); + return; + } + uint32_t * ubuffer = (uint32_t *)buffer; + long packSize = ntohl(ubuffer[0]); + strbuffer.resize(packSize); + if (fread((void*)strbuffer.c_str(), packSize, 1, F) != 1){ + fprintf(stderr, "Could not read packet\n"); + strbuffer = ""; + jsonbuffer.null(); + return; + } + jsonbuffer = JSON::fromDTMI(strbuffer); + } return; } long long unsigned int version = 0;