projects
/
goodguy
/
history.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
repair for svg segv, fix valgrind free ref err
[goodguy/history.git]
/
cinelerra-5.1
/
cinelerra
/
indexfile.C
diff --git
a/cinelerra-5.1/cinelerra/indexfile.C
b/cinelerra-5.1/cinelerra/indexfile.C
index 02ecb66aceaa8e705e216e997baf712edb49c735..eb9184f91a7e589e7582d979195997eefe5eda0e 100644
(file)
--- a/
cinelerra-5.1/cinelerra/indexfile.C
+++ b/
cinelerra-5.1/cinelerra/indexfile.C
@@
-103,12
+103,12
@@
static int udf_volume_id(const char *path, char *fname)
if( strncmp(ISO_STANDARD_ID,id.id,sizeof(id.id)) ) continue;
// look for volume_id
if( !isalnum(id.volume_id[0]) ) continue;
if( strncmp(ISO_STANDARD_ID,id.id,sizeof(id.id)) ) continue;
// look for volume_id
if( !isalnum(id.volume_id[0]) ) continue;
- char *bp = &id.volume_id[0], *cp = fname;
+ char *bp =
(char*)
&id.volume_id[0], *cp = fname;
for( int i=0; i<(int)sizeof(id.volume_id); ++i ) *cp++ = *bp++;
while( --cp>=fname && *cp==' ' ) *cp = 0;
if( !*fname ) continue;
// fname = volume_id _ creation_date
for( int i=0; i<(int)sizeof(id.volume_id); ++i ) *cp++ = *bp++;
while( --cp>=fname && *cp==' ' ) *cp = 0;
if( !*fname ) continue;
// fname = volume_id _ creation_date
- ++cp; *cp++ = '_'; bp = &id.creation_date[0];
+ ++cp; *cp++ = '_'; bp =
(char*)
&id.creation_date[0];
for( int i=0; i<(int)sizeof(id.creation_date)-1; ++i ) {
if( !isdigit(*bp) ) break;
*cp++ = *bp++;
for( int i=0; i<(int)sizeof(id.creation_date)-1; ++i ) {
if( !isdigit(*bp) ) break;
*cp++ = *bp++;
@@
-141,7
+141,6
@@
IndexFile::IndexFile(MWindow *mwindow,
this->mwindow = mwindow;
this->indexable = indexable;
redraw_timer = new Timer;
this->mwindow = mwindow;
this->indexable = indexable;
redraw_timer = new Timer;
-
if(indexable)
{
indexable->add_user();
if(indexable)
{
indexable->add_user();
@@
-433,6
+432,9
@@
SET_TRACE
// open the source file
if(open_source()) return 1;
// open the source file
if(open_source()) return 1;
+ source_channels = indexable->get_audio_channels();
+ source_samplerate = indexable->get_sample_rate();
+ source_length = indexable->get_audio_samples();
SET_TRACE
SET_TRACE
@@
-866,16
+868,19
@@
int IndexFile::read_info(Indexable *test_indexable)
// Read the file format & index state.
if(test_indexable->is_asset)
{
// Read the file format & index state.
if(test_indexable->is_asset)
{
- Asset asset, *test_asset = (Asset *)test_indexable;
- asset.read(&xml);
+ Asset *test_asset = (Asset *)test_indexable;
+ Asset *asset = new Asset;
+ asset->read(&xml);
+ int ret = 0;
//printf("IndexFile::read_info %d %f\n", __LINE__, asset->get_frame_rate());
//printf("IndexFile::read_info %d %f\n", __LINE__, asset->get_frame_rate());
- if( asset.format == FILE_UNKNOWN ||
- test_asset->format != asset.format )
- {
+ if( asset->format == FILE_UNKNOWN ||
+ test_asset->format != asset->format ) {
if(debug) printf("IndexFile::read_info %d\n", __LINE__);
if(debug) printf("IndexFile::read_info %d\n", __LINE__);
- ret
urn
1;
+ ret
=
1;
}
}
+ asset->remove_user();
+ if( ret ) return ret;
}
else
{
}
else
{