cmTimeLine.h/c: cmTimeLineReadJson() now takes a handle ptr, rather than a handle,
so that it can correctly release the handle if the file read/parse fails.
This commit is contained in:
parent
57d10b5bdb
commit
8d00e8fe23
@ -925,7 +925,7 @@ cmTlRC_t cmTimeLineInitializeFromFile( cmCtx_t* ctx, cmTlH_t* hp, cmTlCb_t cbF
|
|||||||
if((rc = cmTimeLineInitialize(ctx,hp,cbFunc,cbArg)) != kOkTlRC )
|
if((rc = cmTimeLineInitialize(ctx,hp,cbFunc,cbArg)) != kOkTlRC )
|
||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
return cmTimeLineReadJson(*hp,fn);
|
return cmTimeLineReadJson(hp,fn);
|
||||||
}
|
}
|
||||||
|
|
||||||
const cmChar_t* cmTimeLineFileName( cmTlH_t h )
|
const cmChar_t* cmTimeLineFileName( cmTlH_t h )
|
||||||
@ -1317,7 +1317,7 @@ cmTlRC_t _cmTlParseErr( cmErr_t* err, const cmChar_t* errLabelPtr, unsigned idx,
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmTlRC_t cmTimeLineReadJson( cmTlH_t h, const cmChar_t* ifn )
|
cmTlRC_t cmTimeLineReadJson( cmTlH_t* hp, const cmChar_t* ifn )
|
||||||
{
|
{
|
||||||
cmTlRC_t rc = kOkTlRC;
|
cmTlRC_t rc = kOkTlRC;
|
||||||
cmJsonH_t jsH = cmJsonNullHandle;
|
cmJsonH_t jsH = cmJsonNullHandle;
|
||||||
@ -1325,7 +1325,7 @@ cmTlRC_t cmTimeLineReadJson( cmTlH_t h, const cmChar_t* ifn )
|
|||||||
const cmChar_t* errLabelPtr;
|
const cmChar_t* errLabelPtr;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
_cmTl_t* p = _cmTlHandleToPtr(h);
|
_cmTl_t* p = _cmTlHandleToPtr(*hp);
|
||||||
|
|
||||||
// open the json file
|
// open the json file
|
||||||
if( cmJsonInitializeFromFile(&jsH, ifn, &p->ctx ) != kOkJsRC )
|
if( cmJsonInitializeFromFile(&jsH, ifn, &p->ctx ) != kOkJsRC )
|
||||||
@ -1381,7 +1381,7 @@ cmTlRC_t cmTimeLineReadJson( cmTlH_t h, const cmChar_t* ifn )
|
|||||||
|
|
||||||
errLabel:
|
errLabel:
|
||||||
if( rc != kOkTlRC )
|
if( rc != kOkTlRC )
|
||||||
_cmTimeLineFinalize(p);
|
cmTimeLineFinalize(hp);
|
||||||
|
|
||||||
cmJsonFinalize(&jsH);
|
cmJsonFinalize(&jsH);
|
||||||
return rc;
|
return rc;
|
||||||
@ -1604,7 +1604,7 @@ cmTlRC_t cmTimeLineTest( cmCtx_t* ctx, const cmChar_t* jsFn )
|
|||||||
if((rc = cmTimeLineInitialize(ctx,&tlH,NULL,NULL)) != kOkTlRC )
|
if((rc = cmTimeLineInitialize(ctx,&tlH,NULL,NULL)) != kOkTlRC )
|
||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
if((rc = cmTimeLineReadJson(tlH,jsFn)) != kOkTlRC )
|
if((rc = cmTimeLineReadJson(&tlH,jsFn)) != kOkTlRC )
|
||||||
goto errLabel;
|
goto errLabel;
|
||||||
|
|
||||||
if((rc = cmTimeLineInsert(tlH,"Mark",kMarkerTlId,"My Marker",10,0,NULL,0)) != kOkTlRC )
|
if((rc = cmTimeLineInsert(tlH,"Mark",kMarkerTlId,"My Marker",10,0,NULL,0)) != kOkTlRC )
|
||||||
|
@ -181,7 +181,7 @@ extern "C" {
|
|||||||
unsigned seqId );
|
unsigned seqId );
|
||||||
|
|
||||||
// See src/data/tl0.json for an example JSON file.
|
// See src/data/tl0.json for an example JSON file.
|
||||||
cmTlRC_t cmTimeLineReadJson( cmTlH_t h, const cmChar_t* ifn );
|
cmTlRC_t cmTimeLineReadJson( cmTlH_t* hp, const cmChar_t* ifn );
|
||||||
|
|
||||||
// Return a count of sequences contained within this timeline.
|
// Return a count of sequences contained within this timeline.
|
||||||
unsigned cmTimeLineSeqCount( cmTlH_t h );
|
unsigned cmTimeLineSeqCount( cmTlH_t h );
|
||||||
|
Loading…
Reference in New Issue
Block a user