Ignore:
Timestamp:
06/18/11 14:28:43 (13 years ago)
Author:
r2d
Message:

patch by Markus Peloquin <markus@…> :
Fixed the copious memory leaks in libcuefile and changed the headers
so C++ could use it.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcuefile/trunk/src/cd.c

    r416 r469  
    5959}
    6060
     61void track_delete(Track *track)
     62{
     63        if (track->isrc)
     64                free(track->isrc);
     65        if (track->cdtext)
     66                cdtext_delete(track->cdtext);
     67        if (track->zero_pre.name)
     68                free(track->zero_pre.name);
     69        if (track->file.name)
     70                free(track->file.name);
     71        if (track->zero_post.name)
     72                free(track->zero_post.name);
     73        free(track);
     74}
     75
     76void cd_delete (Cd *cd)
     77{
     78        size_t i;
     79        if (cd->cdtext)
     80                cdtext_delete(cd->cdtext);
     81        if (cd->catalog)
     82                free(cd->catalog);
     83        for (i = 0; i < cd->ntrack; i++)
     84                track_delete(cd->track[i]);
     85        free(cd);
     86}
     87
    6188Track *track_init ()
    6289{
     
    128155        if (MAXTRACK - 1 > cd->ntrack)
    129156                cd->ntrack++;
    130         else
     157        else {
    131158                fprintf(stderr, "too many tracks\n");
     159                track_delete(cd->track[cd->ntrack - 1]);
     160        }
    132161
    133162        /* this will reinit last track if there were too many */
Note: See TracChangeset for help on using the changeset viewer.