- plugged the pending memory leaks.

This commit is contained in:
Christoph Oelckers 2018-02-21 21:33:56 +01:00
parent 5219916de5
commit e84ec2978a
5 changed files with 15 additions and 24 deletions

View file

@ -118,8 +118,12 @@ TimidityPPMIDIDevice::TimidityPPMIDIDevice(const char *args)
if (instruments != nullptr && !instruments->checkConfig(args)) if (instruments != nullptr && !instruments->checkConfig(args))
{ {
delete instruments; delete instruments;
instruments = nullptr;
}
if (instruments == nullptr)
{
instruments = new TimidityPlus::Instruments;
} }
instruments = new TimidityPlus::Instruments;
if (!instruments->load(args)) if (!instruments->load(args))
{ {
delete instruments; delete instruments;

View file

@ -1867,15 +1867,13 @@ Instrument *Instruments::play_midi_load_instrument(int dr, int bk, int prog, boo
void Instruments::init_userdrum() void Instruments::init_userdrum()
{ {
int i; int i;
AlternateAssign *alt;
free_userdrum(); free_userdrum();
for (i = 0; i<2; i++) { /* allocate alternative assign */ for (i = 0; i<2; i++) { /* allocate alternative assign */
alt = (AlternateAssign *)safe_malloc(sizeof(AlternateAssign)); memset(&alt[i], 0, sizeof(AlternateAssign));
memset(alt, 0, sizeof(AlternateAssign));
alloc_instrument_bank(1, 64 + i); alloc_instrument_bank(1, 64 + i);
drumset[64 + i]->alt = alt; drumset[64 + i]->alt = &alt[i];
} }
} }

View file

@ -319,6 +319,7 @@ class Instruments
UserDrumset *userdrum_first = (UserDrumset *)NULL; UserDrumset *userdrum_first = (UserDrumset *)NULL;
UserDrumset *userdrum_last = (UserDrumset *)NULL; UserDrumset *userdrum_last = (UserDrumset *)NULL;
AlternateAssign alt[2];
/* Some functions get aggravated if not even the standard banks are available. */ /* Some functions get aggravated if not even the standard banks are available. */
ToneBank ToneBank

View file

@ -5779,11 +5779,6 @@ struct midi_file_info *Player::new_midi_file_info()
return p; return p;
} }
struct midi_file_info *Player::get_midi_file_info(const char *filename, int newp)
{
return &midifileinfo;
}
/* /*
@ -5799,21 +5794,18 @@ void Player::playmidi_stream_init(void)
CLEAR_CHANNELMASK(channel_mute); CLEAR_CHANNELMASK(channel_mute);
if (temper_type_mute & 1) if (temper_type_mute & 1)
FILL_CHANNELMASK(channel_mute); FILL_CHANNELMASK(channel_mute);
if(first) if (first)
{ {
first = 0; first = 0;
init_mblock(&playmidi_pool); init_mblock(&playmidi_pool);
current_file_info = get_midi_file_info("TiMidity", 1); midi_streaming = 1;
midi_streaming=1; }
}
else else
reuse_mblock(&playmidi_pool); reuse_mblock(&playmidi_pool);
/* Fill in current_file_info */ /* Fill in current_file_info */
current_file_info = get_midi_file_info("", 0); current_file_info = &midifileinfo;
current_file_info->readflag = 1; current_file_info->readflag = 1;
current_file_info->seq_name = safe_strdup("TiMidity server");
current_file_info->karaoke_title = current_file_info->first_text = NULL;
current_file_info->hdrsiz = 0; current_file_info->hdrsiz = 0;
current_file_info->format = 0; current_file_info->format = 0;
current_file_info->tracks = 0; current_file_info->tracks = 0;

View file

@ -490,9 +490,6 @@ enum {
struct midi_file_info struct midi_file_info
{ {
int readflag; int readflag;
char *seq_name;
char *karaoke_title;
char *first_text;
int16_t hdrsiz; int16_t hdrsiz;
int16_t format; int16_t format;
int16_t tracks; int16_t tracks;
@ -723,7 +720,6 @@ public:
void free_drum_effect(int); void free_drum_effect(int);
void change_system_mode(int mode); void change_system_mode(int mode);
struct midi_file_info *get_midi_file_info(const char *filename, int newp);
void recompute_freq(int v); void recompute_freq(int v);
int get_default_mapID(int ch); int get_default_mapID(int ch);
void init_channel_layer(int ch); void init_channel_layer(int ch);