* Fix memory leaks.
* Add comments about initializations and checking for successful results.
* Add checks for NULL deref.
* Consistency in "TODO" vs "TO-DO" comments!
Modified by mchinen to cleanup debug messages and fix unbalanced mutex on error.
Original patch notes:
OD loader doesn't properly continue scanning files
BUG:
* import large audio file with OD import
* save and close project before OD finishes
* open project again: OD failes badly on continuing
Syntoms:
* .auf.auf.auf worm files ...
* truncated wave display
The isse is subtile:
<odpcmaliasblockfile summaryfile="e000031a.auf" aliasfile="/home/chris/Records/test/0.5seek+cue.flac" aliasstart="26738688" aliaslen="524288" aliaschannel="1"/>
A ODPCMAliasBlockFile is a AliasBlockFile which has 3 overloaded
constructer. One of then silently adds '.aup' to the summaryfile.
So when creating those tracks from XML, we must use the other constructor.
Now we run into a second bug:
AudacityProject::OpenFile calls ProjectFSCK after reading which deletes
the just created empty directories in the _data/e00 dir. OD is doomed.
So simply skip rmdir in fsck. The OD..Blockfiles will disapper when the
OD finishes, so empty dirs will be deleted on further opening the project.
Make DirManager::MoveToNewProjectDirectory(), DirManager::CopyToNewProjectDirectory(), and several BuildFromXML() methods check the result of AssignFile() and do something appropriate about it on failure, rather than ignoring it. Also made AssignFile() check whether the assigned name is well-formed, so it doesn't always return TRUE when disckcheck is FALSE.
Briefer and more correct checks for uninitialized wxFileName objects.
Several "//ANSWER-ME" comments about file ops and commented-out cruft to probably remove.
Clarify some logic and readability.
better handling of error conditions in all BuildFromXML methods, per comment:
// BuildFromXML methods should always return a BlockFile, not NULL,
// even if the result is flawed (e.g., refers to nonexistent file),
// as testing will be done in DirManager::ProjectFSCK().
Also some minor refactoring.
This feature works with mp3 right now - may work on other formats, but that will be a seperate commit.
It is not enabled so most of the changes won't even be compiled, and those that do won't be run.
To enable it uncommment the EXPERIMENTAL_ODFFMPEG def in Experimental.h