Mercurial > libdvdread4.hg
comparison ifo_read.c @ 71:df32da8e44b1 src
Make sure vts_ptt_srpt->title is freed
title was being leaked when the error path is hit in this function.
author | erik |
---|---|
date | Sat, 13 Aug 2011 17:28:48 +0000 |
parents | f6cd5131324d |
children | 933bbcf89338 |
comparison
equal
deleted
inserted
replaced
70:f6cd5131324d | 71:df32da8e44b1 |
---|---|
1158 | 1158 |
1159 vts_ptt_srpt = malloc(sizeof(vts_ptt_srpt_t)); | 1159 vts_ptt_srpt = malloc(sizeof(vts_ptt_srpt_t)); |
1160 if(!vts_ptt_srpt) | 1160 if(!vts_ptt_srpt) |
1161 return 0; | 1161 return 0; |
1162 | 1162 |
1163 vts_ptt_srpt->title = NULL; | |
1163 ifofile->vts_ptt_srpt = vts_ptt_srpt; | 1164 ifofile->vts_ptt_srpt = vts_ptt_srpt; |
1164 | 1165 |
1165 if(!(DVDReadBytes(ifofile->file, vts_ptt_srpt, VTS_PTT_SRPT_SIZE))) { | 1166 if(!(DVDReadBytes(ifofile->file, vts_ptt_srpt, VTS_PTT_SRPT_SIZE))) { |
1166 fprintf(stderr, "libdvdread: Unable to read PTT search table.\n"); | 1167 fprintf(stderr, "libdvdread: Unable to read PTT search table.\n"); |
1167 goto fail; | 1168 goto fail; |
1255 return 1; | 1256 return 1; |
1256 | 1257 |
1257 fail: | 1258 fail: |
1258 free(data); | 1259 free(data); |
1259 ifofile->vts_ptt_srpt = 0; | 1260 ifofile->vts_ptt_srpt = 0; |
1261 free(vts_ptt_srpt->title); | |
1260 free(vts_ptt_srpt); | 1262 free(vts_ptt_srpt); |
1261 return 0; | 1263 return 0; |
1262 } | 1264 } |
1263 | 1265 |
1264 | 1266 |