{
unsigned i;
FLAC::Metadata::Iterator iterator;
- FLAC::Metadata::Prototype *block;
bool next_ok = true;
printf("\tcomparing chain... ");
i = 0;
do {
+ FLAC::Metadata::Prototype *block;
+
printf("%u... ", i);
fflush(stdout);
if(*block != *our_metadata_.blocks[i])
return die_("metadata block mismatch");
+ delete block;
i++;
next_ok = iterator.next();
} while(i < our_metadata_.num_blocks && next_ok);
FLAC__byte data[1000];
unsigned our_current_position = 0;
+ // initialize 'data' to avoid Valgrind errors
+ memset(data, 0, sizeof(data));
+
printf("\n\n++++++ testing level 1 interface\n");
/************************************************************/
return die_("mismatch in min_blocksize");
if(streaminfo->get_max_blocksize() != 576)
return die_("mismatch in max_blocksize");
+ // we will delete streaminfo a little later when we're really done with it...
if(!iterator.next())
return die_("forward iterator ended early");
/* check to see if some basic data matches (c.f. generate_file_()) */
if(block->get_length() != 1234)
return die_("bad PADDING length");
+ delete block;
if(iterator.next())
return die_("forward iterator returned true but should have returned false");
printf("PASSED. iterator.set_block() returned false like it should\n");
else
return die_("iterator.set_block() returned true but shouldn't have");
+ delete streaminfo;
}
/************************************************************/
FLAC__byte data[2000];
unsigned our_current_position;
+ // initialize 'data' to avoid Valgrind errors
+ memset(data, 0, sizeof(data));
+
printf("\n\n++++++ testing level 2 interface\n");
printf("generate read-only file\n");
streaminfo->set_sample_rate(32000);
if(!replace_in_our_metadata_(block, our_current_position, /*copy=*/true))
return die_("copying object");
+ delete block;
if(!chain.write(/*use_padding=*/false, /*preserve_file_stats=*/true))
return die_c_("during chain.write(false, true)", chain.status());
- if(!compare_chain_(chain, our_current_position, iterator.get_block()))
+ block = iterator.get_block();
+ if(!compare_chain_(chain, our_current_position, block))
return false;
+ delete block;
if(!test_file_(flacfile_, /*ignore_metadata=*/false))
return false;
app->set_id((const unsigned char *)"duh");
if(!app->set_data(data, block->get_length()-(FLAC__STREAM_METADATA_APPLICATION_ID_LEN/8), true))
return die_("setting APPLICATION data");
+ delete block;
if(!replace_in_our_metadata_(app, our_current_position, /*copy=*/true))
return die_("copying object");
if(!iterator.set_block(app))
if(!chain.write(/*use_padding=*/false, /*preserve_file_stats=*/false))
return die_c_("during chain.write(false, false)", chain.status());
- if(!compare_chain_(chain, our_current_position, iterator.get_block()))
+ block = iterator.get_block();
+ if(!compare_chain_(chain, our_current_position, block))
return false;
+ delete block;
if(!test_file_(flacfile_, /*ignore_metadata=*/false))
return false;
if(!chain.write(/*use_padding=*/false, /*preserve_file_stats=*/false))
return die_c_("during chain.write(false, false)", chain.status());
- if(!compare_chain_(chain, our_current_position, iterator.get_block()))
+ block = iterator.get_block();
+ if(!compare_chain_(chain, our_current_position, block))
return false;
+ delete block;
if(!test_file_(flacfile_, /*ignore_metadata=*/false))
return false;
if(!chain.write(/*use_padding=*/false, /*preserve_file_stats=*/false))
return die_c_("during chain.write(false, false)", chain.status());
- if(!compare_chain_(chain, our_current_position, iterator.get_block()))
+ block = iterator.get_block();
+ if(!compare_chain_(chain, our_current_position, block))
return false;
+ delete block;
if(!test_file_(flacfile_, /*ignore_metadata=*/false))
return false;
if(!chain.write(/*use_padding=*/false, /*preserve_file_stats=*/false))
return die_c_("during chain.write(false, false)", chain.status());
- if(!compare_chain_(chain, our_current_position, iterator.get_block()))
+ block = iterator.get_block();
+ if(!compare_chain_(chain, our_current_position, block))
return false;
+ delete block;
if(!test_file_(flacfile_, /*ignore_metadata=*/false))
return false;
if(!chain.write(/*use_padding=*/true, /*preserve_file_stats=*/false))
return die_c_("during chain.write(true, false)", chain.status());
- if(!compare_chain_(chain, our_current_position, iterator.get_block()))
+ block = iterator.get_block();
+ if(!compare_chain_(chain, our_current_position, block))
return false;
+ delete block;
if(!test_file_(flacfile_, /*ignore_metadata=*/false))
return false;
if(!chain.write(/*use_padding=*/true, /*preserve_file_stats=*/false))
return die_c_("during chain.write(true, false)", chain.status());
- if(!compare_chain_(chain, our_current_position, iterator.get_block()))
+ block = iterator.get_block();
+ if(!compare_chain_(chain, our_current_position, block))
return false;
+ delete block;
if(!test_file_(flacfile_, /*ignore_metadata=*/false))
return false;
if(!chain.write(/*use_padding=*/true, /*preserve_file_stats=*/false))
return die_c_("during chain.write(true, false)", chain.status());
- if(!compare_chain_(chain, our_current_position, iterator.get_block()))
+ block = iterator.get_block();
+ if(!compare_chain_(chain, our_current_position, block))
return false;
+ delete block;
if(!test_file_(flacfile_, /*ignore_metadata=*/false))
return false;
if(!chain.write(/*use_padding=*/true, /*preserve_file_stats=*/false))
return die_c_("during chain.write(true, false)", chain.status());
- if(!compare_chain_(chain, our_current_position, iterator.get_block()))
+ block = iterator.get_block();
+ if(!compare_chain_(chain, our_current_position, block))
return false;
+ delete block;
if(!test_file_(flacfile_, /*ignore_metadata=*/false))
return false;
if(!chain.write(/*use_padding=*/true, /*preserve_file_stats=*/false))
return die_c_("during chain.write(true, false)", chain.status());
- if(!compare_chain_(chain, our_current_position, iterator.get_block()))
+ block = iterator.get_block();
+ if(!compare_chain_(chain, our_current_position, block))
return false;
+ delete block;
if(!test_file_(flacfile_, /*ignore_metadata=*/false))
return false;
if(!chain.write(/*use_padding=*/true, /*preserve_file_stats=*/false))
return die_c_("during chain.write(true, false)", chain.status());
- if(!compare_chain_(chain, our_current_position, iterator.get_block()))
+ block = iterator.get_block();
+ if(!compare_chain_(chain, our_current_position, block))
return false;
+ delete block;
if(!test_file_(flacfile_, /*ignore_metadata=*/false))
return false;
if(!iterator.insert_block_after(padding))
return die_("iterator.insert_block_after(padding)");
- if(!compare_chain_(chain, our_current_position, iterator.get_block()))
+ block = iterator.get_block();
+ if(!compare_chain_(chain, our_current_position, block))
return false;
+ delete block;
printf("SV[P]A\tinsert PADDING before\n");
if(0 == (padding = dynamic_cast<FLAC::Metadata::Padding *>(FLAC::Metadata::clone(our_metadata_.blocks[our_current_position]))))
if(!iterator.insert_block_before(padding))
return die_("iterator.insert_block_before(padding)");
- if(!compare_chain_(chain, our_current_position, iterator.get_block()))
+ block = iterator.get_block();
+ if(!compare_chain_(chain, our_current_position, block))
return false;
+ delete block;
printf("SV[P]PA\tinsert PADDING before\n");
if(0 == (padding = dynamic_cast<FLAC::Metadata::Padding *>(FLAC::Metadata::clone(our_metadata_.blocks[our_current_position]))))
if(!iterator.insert_block_before(padding))
return die_("iterator.insert_block_before(padding)");
- if(!compare_chain_(chain, our_current_position, iterator.get_block()))
+ block = iterator.get_block();
+ if(!compare_chain_(chain, our_current_position, block))
return false;
+ delete block;
printf("SV[P]PPA\tnext\n");
if(!iterator.next())
if(!iterator.insert_block_after(padding))
return die_("iterator.insert_block_after(padding)");
- if(!compare_chain_(chain, our_current_position, iterator.get_block()))
+ block = iterator.get_block();
+ if(!compare_chain_(chain, our_current_position, block))
return false;
+ delete block;
printf("SVPPPA[P]\tinsert PADDING before\n");
if(0 == (padding = dynamic_cast<FLAC::Metadata::Padding *>(FLAC::Metadata::clone(our_metadata_.blocks[2]))))
if(!iterator.insert_block_before(padding))
return die_("iterator.insert_block_before(padding)");
- if(!compare_chain_(chain, our_current_position, iterator.get_block()))
+ block = iterator.get_block();
+ if(!compare_chain_(chain, our_current_position, block))
return false;
+ delete block;
}
our_current_position = 0;
if(!iterator.delete_block(/*replace_with_padding=*/true))
return die_c_("iterator.delete_block(true)", chain.status());
- if(!compare_chain_(chain, our_current_position, iterator.get_block()))
+ block = iterator.get_block();
+ if(!compare_chain_(chain, our_current_position, block))
return false;
+ delete block;
printf("S[V]PP\tnext\n");
if(!iterator.next())
if(!iterator.delete_block(/*replace_with_padding=*/false))
return die_c_("iterator.delete_block(false)", chain.status());
- if(!compare_chain_(chain, our_current_position, iterator.get_block()))
+ block = iterator.get_block();
+ if(!compare_chain_(chain, our_current_position, block))
return false;
+ delete block;
printf("S[V]P\tnext\n");
if(!iterator.next())
if(!iterator.delete_block(/*replace_with_padding=*/true))
return die_c_("iterator.delete_block(true)", chain.status());
- if(!compare_chain_(chain, our_current_position, iterator.get_block()))
+ block = iterator.get_block();
+ if(!compare_chain_(chain, our_current_position, block))
return false;
+ delete block;
printf("S[V]P\tnext\n");
if(!iterator.next())
if(!iterator.delete_block(/*replace_with_padding=*/false))
return die_c_("iterator.delete_block(false)", chain.status());
- if(!compare_chain_(chain, our_current_position, iterator.get_block()))
+ block = iterator.get_block();
+ if(!compare_chain_(chain, our_current_position, block))
return false;
+ delete block;
printf("S[V]\tprev\n");
if(!iterator.prev())
if(iterator.delete_block(/*replace_with_padding=*/false))
return die_("iterator.delete_block() on STREAMINFO should have failed but didn't");
- if(!compare_chain_(chain, our_current_position, iterator.get_block()))
+ block = iterator.get_block();
+ if(!compare_chain_(chain, our_current_position, block))
return false;
+ delete block;
}
our_current_position = 0;