--- events/ChanPres.h 1996-02-18 19:57:20.000000000 -0500 +++ events/ChanPres.h 2012-04-07 14:08:43.000000000 -0400 @@ -44,7 +44,7 @@ {return (new ChannelPressureEvent(*this));} virtual EventType GetType(void) const {return (CHANNELPRESSURE);} - virtual char *GetTypeStr(void) const {return ("ChannelPressureEvent");} + virtual const char *GetTypeStr(void) const {return ("ChannelPressureEvent");} virtual char *GetEventStr(void) const; int GetPressure(void) const { if (GetWildcard(wc_pressure)) --- events/Event.h 1996-07-28 14:51:08.000000000 -0400 +++ events/Event.h 2012-04-11 01:04:43.000000000 -0400 @@ -81,12 +81,13 @@ else return (time); } + virtual ~Event() {}; virtual EventType GetType(void) const {return (NOTYPE);} - virtual char *GetTypeStr(void) const {return ("NoType");} + virtual const char *GetTypeStr(void) const {return ("NoType");} virtual char *GetEventStr(void) const; Event *GetNextEvent(void) const {return (next_event);} Event *GetPrevEvent(void) const {return (prev_event);} - const EventTreeNode *GetEventTreeNode(void) const {return (node);} + EventTreeNode *GetEventTreeNode(void) const {return (node);} void SetTime(unsigned long t) { if (t == WC_TIME) @@ -96,7 +97,7 @@ } void SetNextEvent(Event *n) {next_event = n;} void SetPrevEvent(Event *p) {prev_event = p;} - void SetEventTreeNode(const EventTreeNode *n) {node = n;} + void SetEventTreeNode(EventTreeNode *n) {node = n;} Event &operator=(const Event &e); int operator==(const Event &e) const; @@ -120,6 +121,6 @@ static const unsigned long wc_time; Event *next_event; Event *prev_event; - const EventTreeNode *node; + EventTreeNode *node; }; #endif --- events/KeyPres.h 1996-02-18 19:57:26.000000000 -0500 +++ events/KeyPres.h 2012-04-07 14:08:43.000000000 -0400 @@ -45,7 +45,7 @@ virtual Event *Dup(void) const {return (new KeyPressureEvent(*this));} virtual EventType GetType(void) const {return (KEYPRESSURE);} - virtual char *GetTypeStr(void) const {return ("KeyPressureEvent");} + virtual const char *GetTypeStr(void) const {return ("KeyPressureEvent");} virtual char *GetEventStr(void) const; int GetPitch(void) const { if (GetWildcard(wc_pitch)) --- events/MChanPrf.cxx 1996-07-28 15:09:16.000000000 -0400 +++ events/MChanPrf.cxx 2012-04-07 15:41:59.000000000 -0400 @@ -74,7 +74,7 @@ MetaChannelPrefixEvent::~MetaChannelPrefixEvent() { - delete data; + delete[] data; } void @@ -82,7 +82,7 @@ { if (data != 0) - delete data; + delete[] data; if (dat == WC_DATA || len == WC_LENGTH) { SetWildcard(wc_data); data = 0; @@ -101,7 +101,7 @@ (MetaEvent)*this = (MetaEvent)e; if (data != 0) - delete data; + delete[] data; if (e.GetWildcard(wc_data)) { data = 0; length = -1; @@ -129,7 +129,7 @@ buf.setf(ios::showbase | ios::internal); for (i = 0; i < length; i++) buf << " " << hex << setw(4) << setfill('0') << - (int)data[i]; + (intptr_t)data[i]; } buf << ends; delete tbuf; @@ -142,7 +142,7 @@ const unsigned char *ptr; if (data != 0) - delete data; + delete[] data; if ((length = t.GetVarValue()) == -1) return ("Incomplete MetaChannelPrefixEvent - bad length"); data = new unsigned char[length]; --- events/MChanPrf.h 1996-02-18 19:57:29.000000000 -0500 +++ events/MChanPrf.h 2012-04-07 14:36:23.000000000 -0400 @@ -46,7 +46,7 @@ {return (new MetaChannelPrefixEvent(*this));} virtual EventType GetType(void) const {return (METACHANNELPREFIX);} - virtual char *GetTypeStr(void) const + virtual const char *GetTypeStr(void) const {return ("MetaChannelPrefixEvent");} virtual char *GetEventStr(void) const; const unsigned char *GetData(void) const { --- events/MCopy.h 1996-02-12 19:25:36.000000000 -0500 +++ events/MCopy.h 2012-04-07 14:08:43.000000000 -0400 @@ -43,7 +43,7 @@ virtual Event *Dup(void) const {return (new MetaCopyrightEvent(*this));} virtual EventType GetType(void) const {return (METACOPYRIGHT);} - virtual char *GetTypeStr(void) const {return ("MetaCopyrightEvent");} + virtual const char *GetTypeStr(void) const {return ("MetaCopyrightEvent");} virtual char *GetEventStr(void) const; MetaCopyrightEvent &operator=(const MetaCopyrightEvent &e); --- events/MCue.h 1996-02-12 19:25:37.000000000 -0500 +++ events/MCue.h 2012-04-07 14:08:43.000000000 -0400 @@ -43,7 +43,7 @@ virtual Event *Dup(void) const {return (new MetaCueEvent(*this));} virtual EventType GetType(void) const {return (METACUE);} - virtual char *GetTypeStr(void) const {return ("MetaCueEvent");} + virtual const char *GetTypeStr(void) const {return ("MetaCueEvent");} virtual char *GetEventStr(void) const; MetaCueEvent &operator=(const MetaCueEvent &e); --- events/MEOT.h 1996-02-12 19:25:38.000000000 -0500 +++ events/MEOT.h 2012-04-07 14:08:43.000000000 -0400 @@ -43,7 +43,7 @@ {return (new MetaEndOfTrackEvent(*this));} virtual EventType GetType(void) const {return (METAENDOFTRACK);} - virtual char *GetTypeStr(void) const {return ("MetaEndOfTrackEvent");} + virtual const char *GetTypeStr(void) const {return ("MetaEndOfTrackEvent");} virtual char *GetEventStr(void) const; MetaEndOfTrackEvent &operator=(const MetaEndOfTrackEvent &e); --- events/MEvent.h 1996-02-12 19:25:39.000000000 -0500 +++ events/MEvent.h 2012-04-07 14:08:43.000000000 -0400 @@ -42,7 +42,7 @@ virtual Event *Dup(void) const {return (new MetaEvent(*this));} virtual EventType GetType(void) const {return (META);} - virtual char *GetTypeStr(void) const {return ("MetaEvent");} + virtual const char *GetTypeStr(void) const {return ("MetaEvent");} virtual char *GetEventStr(void) const; MetaEvent &operator=(const MetaEvent &e); --- events/MInstNam.h 1996-02-12 19:25:39.000000000 -0500 +++ events/MInstNam.h 2012-04-07 14:08:43.000000000 -0400 @@ -45,7 +45,7 @@ {return (new MetaInstrumentNameEvent(*this));} virtual EventType GetType(void) const {return (METAINSTRUMENTNAME);} - virtual char *GetTypeStr(void) const {return ("MetaInstrumentName");} + virtual const char *GetTypeStr(void) const {return ("MetaInstrumentName");} virtual char *GetEventStr(void) const; MetaInstrumentNameEvent &operator=(const MetaInstrumentNameEvent &e); --- events/MKey.cxx 1996-07-28 15:09:19.000000000 -0400 +++ events/MKey.cxx 2012-04-07 15:51:06.000000000 -0400 @@ -396,7 +396,7 @@ badkey = 1; } - delete keystr; + delete[] keystr; if (badkey) *match = 0; else @@ -409,21 +409,13 @@ StrToMode(const char *str, int *match) { Mode mode; - char *modestr; - int i, modelen; - - modelen = strlen(str); - modestr = new char[modelen + 1]; - for (i = 0; i < modelen; i++) - modestr[i] = tolower(str[i]); - modestr[i] = '\0'; *match = 1; - if (strcmp(modestr, "minor") == 0) + if (strcasecmp(str, "minor") == 0) mode = MODE_MINOR; - else if (strcmp(modestr, "major") == 0) + else if (strcasecmp(str, "major") == 0) mode = MODE_MAJOR; - else if (strcmp(modestr, "*") == 0) + else if (strcasecmp(str, "*") == 0) mode = MODE_WC; else { mode = MODE_MAJOR; --- events/MKey.h 1996-02-18 19:57:33.000000000 -0500 +++ events/MKey.h 2012-04-07 14:08:43.000000000 -0400 @@ -57,7 +57,7 @@ virtual Event *Dup(void) const {return (new MetaKeyEvent(*this));} virtual EventType GetType(void) const {return (METAKEY);} - virtual char *GetTypeStr(void) const {return ("MetaKeyEvent");} + virtual const char *GetTypeStr(void) const {return ("MetaKeyEvent");} virtual char *GetEventStr(void) const; Key GetKey(void) const { if (GetWildcard(wc_key)) --- events/MLyric.h 1996-02-12 19:25:41.000000000 -0500 +++ events/MLyric.h 2012-04-07 14:08:43.000000000 -0400 @@ -43,7 +43,7 @@ virtual Event *Dup(void) const {return (new MetaLyricEvent(*this));} virtual EventType GetType(void) const {return (METALYRIC);} - virtual char *GetTypeStr(void) const {return ("MetaLyricEvent");} + virtual const char *GetTypeStr(void) const {return ("MetaLyricEvent");} virtual char *GetEventStr(void) const; MetaLyricEvent &operator=(const MetaLyricEvent &e); --- events/MMarker.h 1996-02-12 19:25:42.000000000 -0500 +++ events/MMarker.h 2012-04-07 14:08:43.000000000 -0400 @@ -43,7 +43,7 @@ virtual Event *Dup(void) const {return (new MetaMarkerEvent(*this));} virtual EventType GetType(void) const {return (METAMARKER);} - virtual char *GetTypeStr(void) const {return ("MetaMarkerEvent");} + virtual const char *GetTypeStr(void) const {return ("MetaMarkerEvent");} virtual char *GetEventStr(void) const; MetaMarkerEvent &operator=(const MetaMarkerEvent &e); --- events/MPortNum.h 1996-02-18 19:57:36.000000000 -0500 +++ events/MPortNum.h 2012-04-07 14:08:43.000000000 -0400 @@ -44,7 +44,7 @@ {return (new MetaPortNumberEvent(*this));} virtual EventType GetType(void) const {return (METAPORTNUMBER);} - virtual char *GetTypeStr(void) const + virtual const char *GetTypeStr(void) const {return ("MetaPortNumberEvent");} virtual char *GetEventStr(void) const; int GetPort(void) const { --- events/MSMPTE.h 1996-02-18 19:57:40.000000000 -0500 +++ events/MSMPTE.h 2012-04-07 14:08:43.000000000 -0400 @@ -42,7 +42,7 @@ virtual Event *Dup(void) const {return (new MetaSMPTEEvent(*this));} virtual EventType GetType(void) const {return (METASMPTE);} - virtual char *GetTypeStr(void) const {return ("MetaSMPTEEvent");} + virtual const char *GetTypeStr(void) const {return ("MetaSMPTEEvent");} virtual char *GetEventStr(void) const; int GetHour(void) const { if (GetWildcard(wc_hour)) --- events/MSeqNam.h 1996-02-12 19:25:44.000000000 -0500 +++ events/MSeqNam.h 2012-04-07 14:08:43.000000000 -0400 @@ -44,7 +44,7 @@ {return (new MetaSequenceNameEvent(*this));} virtual EventType GetType(void) const {return (METASEQUENCENAME);} - virtual char *GetTypeStr(void) const {return ("MetaSequenceNameEvent");} + virtual const char *GetTypeStr(void) const {return ("MetaSequenceNameEvent");} virtual char *GetEventStr(void) const; MetaSequenceNameEvent &operator=(const MetaSequenceNameEvent &e); --- events/MSeqNum.h 1996-02-18 19:57:43.000000000 -0500 +++ events/MSeqNum.h 2012-04-07 14:08:43.000000000 -0400 @@ -44,7 +44,7 @@ {return (new MetaSequenceNumberEvent(*this));} virtual EventType GetType(void) const {return (METASEQUENCENUMBER);} - virtual char *GetTypeStr(void) const + virtual const char *GetTypeStr(void) const {return ("MetaSequenceNumberEvent");} virtual char *GetEventStr(void) const; long GetNumber(void) const { --- events/MSeqSpec.cxx 1996-07-28 15:09:24.000000000 -0400 +++ events/MSeqSpec.cxx 2012-04-07 15:47:09.000000000 -0400 @@ -74,7 +74,7 @@ MetaSequencerSpecificEvent::~MetaSequencerSpecificEvent() { - delete data; + delete[] data; } void @@ -82,7 +82,7 @@ { if (data != 0) - delete data; + delete[] data; if (dat == WC_DATA || len == WC_LENGTH) { SetWildcard(wc_data); data = 0; @@ -102,7 +102,7 @@ (MetaEvent)*this = (MetaEvent)e; if (data != 0) - delete data; + delete[] data; if (e.GetWildcard(wc_data)) { data = 0; length = -1; @@ -144,7 +144,7 @@ const unsigned char *ptr; if (data != 0) - delete data; + delete[] data; if ((length = t.GetVarValue()) == -1) return ("Incomplete MetaSequenceSpecificEvent - bad length"); data = new unsigned char[length]; --- events/MSeqSpec.h 1996-02-18 19:57:45.000000000 -0500 +++ events/MSeqSpec.h 2012-04-07 14:08:43.000000000 -0400 @@ -46,7 +46,7 @@ {return (new MetaSequencerSpecificEvent(*this));} virtual EventType GetType(void) const {return (METASEQUENCERSPECIFIC);} - virtual char *GetTypeStr(void) const + virtual const char *GetTypeStr(void) const {return ("MetaSequencerSpecificEvent");} virtual char *GetEventStr(void) const; const unsigned char *GetData(void) const { --- events/MTempo.h 1996-02-18 19:57:49.000000000 -0500 +++ events/MTempo.h 2012-04-07 14:08:43.000000000 -0400 @@ -42,7 +42,7 @@ virtual Event *Dup(void) const {return (new MetaTempoEvent(*this));} virtual EventType GetType(void) const {return (METATEMPO);} - virtual char *GetTypeStr(void) const {return ("MetaTempoEvent");} + virtual const char *GetTypeStr(void) const {return ("MetaTempoEvent");} virtual char *GetEventStr(void) const; short GetTempo(void) const { if (GetWildcard(wc_tempo)) --- events/MText.cxx 1996-07-28 15:09:25.000000000 -0400 +++ events/MText.cxx 2012-04-07 15:46:17.000000000 -0400 @@ -83,14 +83,14 @@ MetaTextEvent::~MetaTextEvent() { - delete string; + delete[] string; } void MetaTextEvent::SetString(const char *str) { - delete string; + delete[] string; if (str == WC_STRING) { string = 0; length = -1; @@ -110,7 +110,7 @@ (MetaEvent)*this = (MetaEvent)e; length = e.length; - delete string; + delete[] string; if (e.GetWildcard(wc_string)) { string = 0; return (*this); @@ -144,7 +144,7 @@ const unsigned char *ptr; if (string != 0) - delete string; + delete[] string; if ((length = t.GetVarValue()) == -1) return ("Incomplete MetaTextEvent - bad length"); string = new char[length + 1]; --- events/MText.h 1996-02-18 19:57:52.000000000 -0500 +++ events/MText.h 2012-04-07 14:08:43.000000000 -0400 @@ -43,7 +43,7 @@ virtual Event *Dup(void) const {return (new MetaTextEvent(*this));} virtual EventType GetType(void) const {return (METATEXT);} - virtual char *GetTypeStr(void) const {return ("MetaTextEvent");} + virtual const char *GetTypeStr(void) const {return ("MetaTextEvent");} virtual char *GetEventStr(void) const; const char *GetString(void) const { if (GetWildcard(wc_string)) --- events/MTime.h 1996-02-18 19:57:55.000000000 -0500 +++ events/MTime.h 2012-04-07 14:08:43.000000000 -0400 @@ -43,7 +43,7 @@ virtual Event *Dup(void) const {return (new MetaTimeEvent(*this));} virtual EventType GetType(void) const {return (METATIME);} - virtual char *GetTypeStr(void) const {return ("MetaTimeEvent");} + virtual const char *GetTypeStr(void) const {return ("MetaTimeEvent");} virtual char *GetEventStr(void) const; int GetNumerator(void) const { if (GetWildcard(wc_numerator)) --- events/MUnknown.cxx 1996-07-28 15:09:26.000000000 -0400 +++ events/MUnknown.cxx 2012-04-07 15:48:00.000000000 -0400 @@ -86,14 +86,14 @@ MetaUnknownEvent::~MetaUnknownEvent() { - delete data; + delete[] data; } void MetaUnknownEvent::SetData(const unsigned char *dat, long len) { - delete data; + delete[] data; if (dat == WC_DATA || len == WC_LENGTH) { SetWildcard(wc_data); data = 0; @@ -111,7 +111,7 @@ { (MetaEvent)*this = (MetaEvent)e; - delete data; + delete[] data; type = e.type; if (e.GetWildcard(wc_data)) { data = 0; @@ -158,7 +158,7 @@ const unsigned char *ptr; if (data != 0) - delete data; + delete[] data; if ((length = t.GetVarValue()) == -1) return ("Incomplete MetaUnknownEvent - bad length"); data = new unsigned char[length]; --- events/MUnknown.h 1996-02-25 18:09:15.000000000 -0500 +++ events/MUnknown.h 2012-04-07 14:08:43.000000000 -0400 @@ -45,7 +45,7 @@ virtual Event *Dup(void) const {return (new MetaUnknownEvent(*this));} virtual EventType GetType(void) const {return (METAUNKNOWN);} - virtual char *GetTypeStr(void) const {return ("MetaUnknownEvent");} + virtual const char *GetTypeStr(void) const {return ("MetaUnknownEvent");} virtual char *GetEventStr(void) const; const unsigned char *GetData(void) const { if (GetWildcard(wc_data)) --- events/NormEvnt.h 1996-02-18 19:58:01.000000000 -0500 +++ events/NormEvnt.h 2012-04-07 14:08:43.000000000 -0400 @@ -42,7 +42,7 @@ virtual Event *Dup(void) const {return (new NormalEvent(*this));} virtual EventType GetType(void) const {return (NORMAL);} - virtual char *GetTypeStr(void) const {return ("NormalEvent");} + virtual const char *GetTypeStr(void) const {return ("NormalEvent");} virtual char *GetEventStr(void) const; int GetChannel(void) const { if (GetWildcard(wc_channel)) --- events/Note.h 1996-02-25 18:09:19.000000000 -0500 +++ events/Note.h 2012-04-07 14:08:43.000000000 -0400 @@ -43,7 +43,7 @@ virtual Event *Dup(void) const {return (new NoteEvent(*this));} virtual EventType GetType(void) const {return (NOTE);} - virtual char *GetTypeStr(void) const {return ("NoteEvent");} + virtual const char *GetTypeStr(void) const {return ("NoteEvent");} virtual char *GetEventStr(void) const; int GetPitch(void) const { if (GetWildcard(wc_pitch)) --- events/NoteOff.h 1996-02-18 19:58:07.000000000 -0500 +++ events/NoteOff.h 2012-04-07 14:08:43.000000000 -0400 @@ -43,7 +43,7 @@ virtual Event *Dup(void) const {return (new NoteOffEvent(*this));} virtual EventType GetType(void) const {return (NOTEOFF);} - virtual char *GetTypeStr(void) const {return ("NoteOffEvent");} + virtual const char *GetTypeStr(void) const {return ("NoteOffEvent");} virtual char *GetEventStr(void) const; NoteOffEvent &operator=(const NoteOffEvent &e); --- events/NoteOn.h 1996-02-25 18:09:22.000000000 -0500 +++ events/NoteOn.h 2012-04-07 14:08:43.000000000 -0400 @@ -45,7 +45,7 @@ virtual Event *Dup(void) const {return (new NoteOnEvent(*this));} virtual EventType GetType(void) const {return (NOTEON);} - virtual char *GetTypeStr(void) const {return ("NoteOnEvent");} + virtual const char *GetTypeStr(void) const {return ("NoteOnEvent");} virtual char *GetEventStr(void) const; unsigned long GetDuration(void) const { --- events/Param.h 1996-02-18 19:58:13.000000000 -0500 +++ events/Param.h 2012-04-07 14:08:43.000000000 -0400 @@ -42,7 +42,7 @@ virtual Event *Dup(void) const {return (new ParameterEvent(*this));} virtual EventType GetType(void) const {return (PARAMETER);} - virtual char *GetTypeStr(void) const {return ("ParameterEvent");} + virtual const char *GetTypeStr(void) const {return ("ParameterEvent");} virtual char *GetEventStr(void) const; int GetParameter(void) const { if (GetWildcard(wc_parameter)) --- events/PitchWhl.h 1996-02-18 19:58:16.000000000 -0500 +++ events/PitchWhl.h 2012-04-07 14:08:43.000000000 -0400 @@ -42,7 +42,7 @@ virtual Event *Dup(void) const {return (new PitchWheelEvent(*this));} virtual EventType GetType(void) const {return (PITCHWHEEL);} - virtual char *GetTypeStr(void) const {return ("PitchWheelEvent");} + virtual const char *GetTypeStr(void) const {return ("PitchWheelEvent");} virtual char *GetEventStr(void) const; long GetValue(void) const { if (GetWildcard(wc_value)) --- events/Program.h 1996-02-18 19:58:19.000000000 -0500 +++ events/Program.h 2012-04-07 14:08:43.000000000 -0400 @@ -42,7 +42,7 @@ virtual Event *Dup(void) const {return (new ProgramEvent(*this));} virtual EventType GetType(void) const {return (PROGRAM);} - virtual char *GetTypeStr(void) const {return ("ProgramEvent");} + virtual const char *GetTypeStr(void) const {return ("ProgramEvent");} virtual char *GetEventStr(void) const; int GetValue(void) const { if (GetWildcard(wc_value)) --- events/SysEx.cxx 1996-07-28 15:09:30.000000000 -0400 +++ events/SysEx.cxx 2012-04-07 15:44:56.000000000 -0400 @@ -81,7 +81,7 @@ SystemExclusiveEvent::~SystemExclusiveEvent() { - delete data; + delete[] data; } void @@ -89,7 +89,7 @@ { if (data != 0) - delete data; + delete[] data; if (len == WC_LENGTH || dat == WC_DATA) { SetWildcard(wc_data); data = 0; @@ -107,7 +107,7 @@ (Event)*this = (Event)e; if (data != 0) - delete data; + delete[] data; continued = e.continued; length = e.length; if (e.GetWildcard(wc_data)) { @@ -148,7 +148,7 @@ const unsigned char *ptr; if (data != 0) - delete data; + delete[] data; if ((length = t.GetVarValue()) == -1) return ("Incomplete SystemExclusiveEvent - bad length"); data = new unsigned char[length]; --- events/SysEx.h 1996-02-18 19:58:22.000000000 -0500 +++ events/SysEx.h 2012-04-07 14:08:43.000000000 -0400 @@ -46,7 +46,7 @@ {return (new SystemExclusiveEvent(*this));} virtual EventType GetType(void) const {return (SYSTEMEXCLUSIVE);} - virtual char *GetTypeStr(void) const {return ("SystemExclusiveEvent");} + virtual const char *GetTypeStr(void) const {return ("SystemExclusiveEvent");} virtual char *GetEventStr(void) const; const unsigned char *GetData(void) const { if (GetWildcard(wc_data)) --- smf/SMFUtils.cxx 1996-08-04 23:47:36.000000000 -0400 +++ smf/SMFUtils.cxx 2012-04-07 14:08:43.000000000 -0400 @@ -59,7 +59,7 @@ } long -MWrite(int fd, char *data, long len) +MWrite(int fd, const char *data, long len) { int num_written; int total_written; @@ -96,7 +96,7 @@ } long -MWrite(Tcl_Channel channel, char *data, long len) +MWrite(Tcl_Channel channel, const char *data, long len) { int num_written; int total_written; @@ -116,7 +116,7 @@ long -VarToFix(unsigned char *var, int *len) +VarToFix(const unsigned char *var, int *len) { long fix; --- smf/SMFUtils.h 1996-08-04 23:47:36.000000000 -0400 +++ smf/SMFUtils.h 2012-04-07 14:08:43.000000000 -0400 @@ -147,9 +147,9 @@ extern long MRead(int fd, char *data, long len); -extern long MWrite(int fd, char *data, long len); +extern long MWrite(int fd, const char *data, long len); extern long MRead(Tcl_Channel channel, char *data, long len); -extern long MWrite(Tcl_Channel channel, char *data, long len); -extern long VarToFix(unsigned char *var, int *len); +extern long MWrite(Tcl_Channel channel, const char *data, long len); +extern long VarToFix(const unsigned char *var, int *len); extern int FixToVar(long fix, unsigned char *var); #endif --- song/Song.cxx 1996-08-04 23:47:39.000000000 -0400 +++ song/Song.cxx 2012-04-11 01:02:09.000000000 -0400 @@ -51,7 +51,7 @@ } for (i = 0; i < s.num_tracks; i++) { tracks[i] = new EventTree(*s.tracks[i]); - assert(tracks[1] != 0); + assert(tracks[i] != 0); } } @@ -102,7 +102,7 @@ for (i = 0; i < num_tracks; i++) delete tracks[i]; - delete tracks; + delete[] tracks; } Event * --- tclmEvnt.cxx 1996-07-29 20:14:11.000000000 -0400 +++ tclmEvnt.cxx 2012-04-07 15:42:14.000000000 -0400 @@ -44,6 +44,9 @@ #include "tclmidi.h" #include "tclmEvnt.h" +#define SET_CONST_RESULT(string) \ + Tcl_SetResult(interp, (char *)(void *)string, TCL_STATIC) + void Tclm_PrintEvent(ostream &buf, Event *e) { @@ -148,7 +151,7 @@ buf << "* " << str << ends; else buf << e->GetTime() << " " << str << ends; - delete str; + delete[] str; } char * @@ -552,13 +555,9 @@ } char * -Tclm_PrintMetaEndOfTrack(MetaEndOfTrackEvent *e) +Tclm_PrintMetaEndOfTrack(MetaEndOfTrackEvent *) { ostrstream buf; - MetaEndOfTrackEvent *dummy; - - // shut up a warning - dummy = e; buf << "MetaEndOfTrack" << ends; return (buf.str()); @@ -722,11 +721,11 @@ } Event * -Tclm_ParseEvent(Tcl_Interp *interp, char *str) +Tclm_ParseEvent(Tcl_Interp *interp, const char *str) { Event *event; - Event *(*pfunc)(Tcl_Interp *, long, int, char **); - char **argv, **aptr;; + Event *(*pfunc)(Tcl_Interp *, long, int, const char **); + const char **argv, **aptr; char *name; long time; int argc, i, length; @@ -852,18 +851,19 @@ } event = pfunc(interp, time, argc, argv); Tcl_Ckfree((char *)aptr); - delete name; + delete[] name; return (event); } Event * -Tclm_ParseNoteOff(Tcl_Interp *interp, long time, int argc, char **argv) +Tclm_ParseNoteOff(Tcl_Interp *interp, long time, int argc, + const char **argv) { int channel, pitch, velocity; if (argc != 3 && argc != 4) { - Tcl_SetResult(interp, "bad event: should be \"time NoteOff " - "channel pitch ?velocity?\"", TCL_STATIC); + SET_CONST_RESULT("bad event: should be \"time NoteOff " + "channel pitch ?velocity?\""); return (0); } @@ -886,13 +886,14 @@ } Event * -Tclm_ParseNoteOn(Tcl_Interp *interp, long time, int argc, char **argv) +Tclm_ParseNoteOn(Tcl_Interp *interp, long time, int argc, + const char **argv) { int channel, pitch, velocity; if (argc != 4) { - Tcl_SetResult(interp, "bad event: should be \"time NoteOn " - "channel pitch velocity\"", TCL_STATIC); + SET_CONST_RESULT("bad event: should be \"time NoteOn " + "channel pitch velocity\""); return (0); } @@ -913,7 +914,8 @@ } Event * -Tclm_ParseNote(Tcl_Interp *interp, long time, int argc, char **argv) +Tclm_ParseNote(Tcl_Interp *interp, long time, int argc, + const char **argv) { NoteOnEvent *event; NoteOffEvent *off; @@ -921,8 +923,8 @@ int channel, pitch, velocity; if (argc != 5) { - Tcl_SetResult(interp, "bad event: should be \"time Note " - "channel pitch velocity duration\"", TCL_STATIC); + SET_CONST_RESULT("bad event: should be \"time Note " + "channel pitch velocity duration\""); return (0); } @@ -964,13 +966,14 @@ } Event * -Tclm_ParseKeyPressure(Tcl_Interp *interp, long time, int argc, char **argv) +Tclm_ParseKeyPressure(Tcl_Interp *interp, long time, int argc, + const char **argv) { int channel, pitch, pressure; if (argc != 4) { - Tcl_SetResult(interp, "bad event: should be " - "\"time KeyPressure channel pitch pressure\"", TCL_STATIC); + SET_CONST_RESULT("bad event: should be " + "\"time KeyPressure channel pitch pressure\""); return (0); } @@ -991,13 +994,14 @@ } Event * -Tclm_ParseParameter(Tcl_Interp *interp, long time, int argc, char **argv) +Tclm_ParseParameter(Tcl_Interp *interp, long time, int argc, + const char **argv) { int channel, parameter, value; if (argc != 4) { - Tcl_SetResult(interp, "bad event: should be \"time Parameter " - "channel parameter value\"", TCL_STATIC); + SET_CONST_RESULT("bad event: should be \"time Parameter " + "channel parameter value\""); return (0); } @@ -1018,13 +1022,14 @@ } Event * -Tclm_ParseProgram(Tcl_Interp *interp, long time, int argc, char **argv) +Tclm_ParseProgram(Tcl_Interp *interp, long time, int argc, + const char **argv) { int channel, value; if (argc != 3) { - Tcl_SetResult(interp, "bad event: should be \"time Program " - "channel value\"", TCL_STATIC); + SET_CONST_RESULT("bad event: should be \"time Program " + "channel value\""); return (0); } @@ -1041,13 +1046,14 @@ } Event * -Tclm_ParseChannelPressure(Tcl_Interp *interp, long time, int argc, char **argv) +Tclm_ParseChannelPressure(Tcl_Interp *interp, long time, int argc, + const char **argv) { int channel, pressure; if (argc != 3) { - Tcl_SetResult(interp, "bad event: should be " - "\"time ChannelPressure channel pressure\"", TCL_STATIC); + SET_CONST_RESULT("bad event: should be " + "\"time ChannelPressure channel pressure\""); return (0); } @@ -1064,14 +1070,15 @@ } Event * -Tclm_ParsePitchWheel(Tcl_Interp *interp, long time, int argc, char **argv) +Tclm_ParsePitchWheel(Tcl_Interp *interp, long time, int argc, + const char **argv) { int channel; long value; if (argc != 3) { - Tcl_SetResult(interp, "bad event: should be \"time PitchWheel " - "channel value\"", TCL_STATIC); + SET_CONST_RESULT("bad event: should be \"time PitchWheel " + "channel value\""); return (0); } @@ -1088,19 +1095,19 @@ } Event * -Tclm_ParseSystemExclusive(Tcl_Interp *interp, long time, int argc, char **argv) +Tclm_ParseSystemExclusive(Tcl_Interp *interp, long time, int argc, + const char **argv) { - char **str; + const char **str; SystemExclusiveEvent *event; unsigned char *data; - long len; + int len; int i, val; if ((argc != 2 && argc != 3) || (argc == 3 && strncmp(argv[1], "cont", 4) != 0)) { - Tcl_SetResult(interp, "bad event: should be " - "\"time SystemExclusive ?continued? {data ?data ...?}\"", - TCL_STATIC); + SET_CONST_RESULT("bad event: should be " + "\"time SystemExclusive ?continued? {data ?data ...?}\""); return (0); } @@ -1111,7 +1118,7 @@ event = new SystemExclusiveEvent(time, data, len); return (event); } - if (Tcl_SplitList(interp, argv[1], (int *)&len, &str) != TCL_OK) + if (Tcl_SplitList(interp, argv[1], &len, &str) != TCL_OK) return (0); } else { if (strcmp(argv[2], "*") == 0) { @@ -1121,7 +1128,7 @@ event->SetContinued(1); return (event); } - if (Tcl_SplitList(interp, argv[2], (int *)&len, &str) != TCL_OK) + if (Tcl_SplitList(interp, argv[2], &len, &str) != TCL_OK) return (0); } @@ -1139,20 +1146,20 @@ event = new SystemExclusiveEvent(time, data, len); if (argc == 3) event->SetContinued(1); - delete data; + delete[] data; return (event); } Event * Tclm_ParseMetaSequenceNumber(Tcl_Interp *interp, long time, int argc, - char **argv) + const char **argv) { long num; if (argc != 2) { - Tcl_SetResult(interp, "bad event: should be " - "\"time MetaSequenceNumber number\"", TCL_STATIC); + SET_CONST_RESULT("bad event: should be " + "\"time MetaSequenceNumber number\""); return (0); } @@ -1165,13 +1172,14 @@ } Event * -Tclm_ParseMetaText(Tcl_Interp *interp, long time, int argc, char **argv) +Tclm_ParseMetaText(Tcl_Interp *interp, long time, int argc, + const char **argv) { const char *t; if (argc != 2) { - Tcl_SetResult(interp, "bad event: should be \"time MetaText " - "string\"", TCL_STATIC); + SET_CONST_RESULT("bad event: should be \"time MetaText " + "string\""); return (0); } if (strcmp(argv[1], "*") == 0) @@ -1183,13 +1191,14 @@ } Event * -Tclm_ParseMetaCopyright(Tcl_Interp *interp, long time, int argc, char **argv) +Tclm_ParseMetaCopyright(Tcl_Interp *interp, long time, int argc, + const char **argv) { const char *t; if (argc != 2) { - Tcl_SetResult(interp, "bad event: should be " - "\"time MetaCopyright string\"", TCL_STATIC); + SET_CONST_RESULT("bad event: should be " + "\"time MetaCopyright string\""); return (0); } @@ -1203,13 +1212,13 @@ Event * Tclm_ParseMetaSequenceName(Tcl_Interp *interp, long time, int argc, - char **argv) + const char **argv) { const char *t; if (argc != 2) { - Tcl_SetResult(interp, "bad event: should be " - "\"time MetaSequenceName string\"", TCL_STATIC); + SET_CONST_RESULT("bad event: should be " + "\"time MetaSequenceName string\""); return (0); } @@ -1223,13 +1232,13 @@ Event * Tclm_ParseMetaInstrumentName(Tcl_Interp *interp, long time, int argc, - char **argv) + const char **argv) { const char *t; if (argc != 2) { - Tcl_SetResult(interp, "bad event: should be " - "\"time MetaInstrumentName string\"", TCL_STATIC); + SET_CONST_RESULT("bad event: should be " + "\"time MetaInstrumentName string\""); return (0); } @@ -1242,13 +1251,14 @@ } Event * -Tclm_ParseMetaLyric(Tcl_Interp *interp, long time, int argc, char **argv) +Tclm_ParseMetaLyric(Tcl_Interp *interp, long time, int argc, + const char **argv) { const char *t; if (argc != 2) { - Tcl_SetResult(interp, "bad event: should be \"time MetaLyric " - "string\"", TCL_STATIC); + SET_CONST_RESULT("bad event: should be \"time MetaLyric " + "string\""); return (0); } @@ -1261,13 +1271,14 @@ } Event * -Tclm_ParseMetaMarker(Tcl_Interp *interp, long time, int argc, char **argv) +Tclm_ParseMetaMarker(Tcl_Interp *interp, long time, int argc, + const char **argv) { const char *t; if (argc != 2) { - Tcl_SetResult(interp, "bad event: should be \"time MetaMarker " - "string\"", TCL_STATIC); + SET_CONST_RESULT("bad event: should be \"time MetaMarker " + "string\""); return (0); } @@ -1280,13 +1291,14 @@ } Event * -Tclm_ParseMetaCue(Tcl_Interp *interp, long time, int argc, char **argv) +Tclm_ParseMetaCue(Tcl_Interp *interp, long time, int argc, + const char **argv) { const char *t; if (argc != 2) { - Tcl_SetResult(interp, "bad event: should be \"time MetaCue " - "string\"", TCL_STATIC); + SET_CONST_RESULT("bad event: should be \"time MetaCue " + "string\""); return (0); } @@ -1300,17 +1312,17 @@ Event * Tclm_ParseMetaChannelPrefix(Tcl_Interp *interp, long time, int argc, - char **argv) + const char **argv) { - char **str; + const char **str; MetaChannelPrefixEvent *event; unsigned char *data; - long len; + int len; int i, val; if (argc != 2) { - Tcl_SetResult(interp, "bad event: should be " - "\"time MetaChannelPrefix {data ?data ...?}\"", TCL_STATIC); + SET_CONST_RESULT("bad event: should be " + "\"time MetaChannelPrefix {data ?data ...?}\""); return (0); } @@ -1319,7 +1331,7 @@ len = MetaChannelPrefixEvent::WC_LENGTH; return (new MetaChannelPrefixEvent(time, data, len)); } - if (Tcl_SplitList(interp, argv[1], (int *)&len, &str) != TCL_OK) + if (Tcl_SplitList(interp, argv[1], &len, &str) != TCL_OK) return (0); data = new unsigned char[len]; @@ -1334,19 +1346,20 @@ Tcl_Ckfree((char *)str); event = new MetaChannelPrefixEvent(time, data, len); - delete data; + delete[] data; return (event); } Event * -Tclm_ParseMetaPortNumber(Tcl_Interp *interp, long time, int argc, char **argv) +Tclm_ParseMetaPortNumber(Tcl_Interp *interp, long time, int argc, + const char **argv) { int port; if (argc != 2) { - Tcl_SetResult(interp, "bad event: should be " - "\"time MetaPortNumber port\"", TCL_STATIC); + SET_CONST_RESULT("bad event: should be " + "\"time MetaPortNumber port\""); return (0); } @@ -1359,16 +1372,13 @@ } Event * -Tclm_ParseMetaEndOfTrack(Tcl_Interp *interp, long time, int argc, char **argv) +Tclm_ParseMetaEndOfTrack(Tcl_Interp *interp, long time, int argc, + const char **) { - char *dummy; - - // shut up a warning - dummy = argv[0]; if (argc != 1) { - Tcl_SetResult(interp, "bad event: should be " - "\"time MetaEndOfTrack\"", TCL_STATIC); + SET_CONST_RESULT("bad event: should be " + "\"time MetaEndOfTrack\""); return (0); } @@ -1376,13 +1386,14 @@ } Event * -Tclm_ParseMetaTempo(Tcl_Interp *interp, long time, int argc, char **argv) +Tclm_ParseMetaTempo(Tcl_Interp *interp, long time, int argc, + const char **argv) { int tempo; if (argc != 2) { - Tcl_SetResult(interp, "bad event: should be \"time MetaTempo " - "tempo\"", TCL_STATIC); + SET_CONST_RESULT("bad event: should be \"time MetaTempo " + "tempo\""); return (0); } @@ -1395,13 +1406,14 @@ } Event * -Tclm_ParseMetaSMPTE(Tcl_Interp *interp, long time, int argc, char **argv) +Tclm_ParseMetaSMPTE(Tcl_Interp *interp, long time, int argc, + const char **argv) { int hour, minute, second, frame, fractional_frame; if (argc != 6) { - Tcl_SetResult(interp, "bad event: should be \"time MetaSMPTE " - "hour minute second frame fractional_frame\"", TCL_STATIC); + SET_CONST_RESULT("bad event: should be \"time MetaSMPTE " + "hour minute second frame fractional_frame\""); return (0); } @@ -1431,14 +1443,14 @@ } Event * -Tclm_ParseMetaTime(Tcl_Interp *interp, long time, int argc, char **argv) +Tclm_ParseMetaTime(Tcl_Interp *interp, long time, int argc, + const char **argv) { int numerator, denominator, clocks, thirty_seconds; if (argc != 5) { - Tcl_SetResult(interp, "bad event: should be \"time MetaTime " - "numerator denominator clocks/beat 32nds/quarter\"", - TCL_STATIC); + SET_CONST_RESULT("bad event: should be \"time MetaTime " + "numerator denominator clocks/beat 32nds/quarter\""); return (0); } @@ -1464,15 +1476,16 @@ } Event * -Tclm_ParseMetaKey(Tcl_Interp *interp, long time, int argc, char **argv) +Tclm_ParseMetaKey(Tcl_Interp *interp, long time, int argc, + const char **argv) { Key key; Mode mode; int match; if (argc != 3) { - Tcl_SetResult(interp, "bad event: should be \"time MetaKey " - "key mode\"", TCL_STATIC); + SET_CONST_RESULT("bad event: should be \"time MetaKey " + "key mode\""); return (0); } @@ -1500,18 +1513,17 @@ Event * Tclm_ParseMetaSequencerSpecific(Tcl_Interp *interp, long time, int argc, - char **argv) + const char **argv) { - char **str; + const char **str; MetaSequencerSpecificEvent *event; unsigned char *data; - long len; + int len; int i, val; if (argc != 2) { - Tcl_SetResult(interp, "bad event: should be " - "\"time MetaSequencerSpecific {data ?data ...?}\"", - TCL_STATIC); + SET_CONST_RESULT("bad event: should be " + "\"time MetaSequencerSpecific {data ?data ...?}\""); return (0); } @@ -1520,7 +1532,7 @@ len = MetaSequencerSpecificEvent::WC_LENGTH; return (new MetaSequencerSpecificEvent(time, data, len)); } - if (Tcl_SplitList(interp, argv[1], (int *)&len, &str) != TCL_OK) + if (Tcl_SplitList(interp, argv[1], &len, &str) != TCL_OK) return (0); data = new unsigned char[len]; @@ -1535,23 +1547,24 @@ Tcl_Ckfree((char *)str); event = new MetaSequencerSpecificEvent(time, data, len); - delete data; + delete[] data; return (event); } Event * -Tclm_ParseMetaUnknown(Tcl_Interp *interp, long time, int argc, char **argv) +Tclm_ParseMetaUnknown(Tcl_Interp *interp, long time, int argc, + const char **argv) { - char **str; + const char **str; MetaUnknownEvent *event; unsigned char *data; - long len; + int len; int i, type, val; if (argc != 3) { - Tcl_SetResult(interp, "bad event: should be \"time MetaUnknown " - "type {data ?data ...?}\"", TCL_STATIC); + SET_CONST_RESULT("bad event: should be \"time MetaUnknown " + "type {data ?data ...?}\""); return (0); } @@ -1565,7 +1578,7 @@ len = MetaUnknownEvent::WC_LENGTH; return (new MetaUnknownEvent(time, data, len, type)); } - if (Tcl_SplitList(interp, argv[2], (int *)&len, &str) != TCL_OK) + if (Tcl_SplitList(interp, argv[2], &len, &str) != TCL_OK) return (0); data = new unsigned char[len]; @@ -1580,7 +1593,7 @@ Tcl_Ckfree((char *)str); event = new MetaUnknownEvent(time, data, len, type); - delete data; + delete[] data; return (event); } --- tclmEvnt.h 1996-02-12 19:25:00.000000000 -0500 +++ tclmEvnt.h 2012-04-07 14:08:43.000000000 -0400 @@ -61,57 +61,57 @@ extern char *Tclm_PrintMetaKey(MetaKeyEvent *e); extern char *Tclm_PrintMetaSequencerSpecific(MetaSequencerSpecificEvent *e); extern char *Tclm_PrintMetaUnknown(MetaUnknownEvent *e); -extern Event *Tclm_ParseEvent(Tcl_Interp *interp, char *str); +extern Event *Tclm_ParseEvent(Tcl_Interp *interp, const char *str); extern Event *Tclm_ParseNoteOff(Tcl_Interp *interp, long time, int argc, - char **argv); + const char **argv); extern Event *Tclm_ParseNoteOn(Tcl_Interp *interp, long time, int argc, - char **argv); + const char **argv); extern Event *Tclm_ParseNote(Tcl_Interp *interp, long time, int argc, - char **argv); + const char **argv); extern Event *Tclm_ParseKeyPressure(Tcl_Interp *interp, long time, int argc, - char **argv); + const char **argv); extern Event *Tclm_ParseParameter(Tcl_Interp *interp, long time, int argc, - char **argv); + const char **argv); extern Event *Tclm_ParseProgram(Tcl_Interp *interp, long time, int argc, - char **argv); + const char **argv); extern Event *Tclm_ParseChannelPressure(Tcl_Interp *interp, long time, int argc, - char **argv); + const char **argv); extern Event *Tclm_ParsePitchWheel(Tcl_Interp *interp, long time, int argc, - char **argv); + const char **argv); extern Event *Tclm_ParseSystemExclusive(Tcl_Interp *interp, long time, int argc, - char **argv); + const char **argv); extern Event *Tclm_ParseMetaSequenceNumber(Tcl_Interp *interp, long time, - int argc, char **argv); + int argc, const char **argv); extern Event *Tclm_ParseMetaText(Tcl_Interp *interp, long time, int argc, - char **argv); + const char **argv); extern Event *Tclm_ParseMetaCopyright(Tcl_Interp *interp, long time, int argc, - char **argv); + const char **argv); extern Event *Tclm_ParseMetaSequenceName(Tcl_Interp *interp, long time, - int argc, char **argv); + int argc, const char **argv); extern Event *Tclm_ParseMetaInstrumentName(Tcl_Interp *interp, long time, - int argc, char **argv); + int argc, const char **argv); extern Event *Tclm_ParseMetaLyric(Tcl_Interp *interp, long time, int argc, - char **argv); + const char **argv); extern Event *Tclm_ParseMetaMarker(Tcl_Interp *interp, long time, int argc, - char **argv); + const char **argv); extern Event *Tclm_ParseMetaCue(Tcl_Interp *interp, long time, int argc, - char **argv); + const char **argv); extern Event *Tclm_ParseMetaChannelPrefix(Tcl_Interp *interp, long time, - int argc, char **argv); + int argc, const char **argv); extern Event *Tclm_ParseMetaPortNumber(Tcl_Interp *interp, long time, int argc, - char **argv); + const char **argv); extern Event *Tclm_ParseMetaEndOfTrack(Tcl_Interp *interp, long time, int argc, - char **argv); + const char **argv); extern Event *Tclm_ParseMetaTempo(Tcl_Interp *interp, long time, int argc, - char **argv); + const char **argv); extern Event *Tclm_ParseMetaSMPTE(Tcl_Interp *interp, long time, int argc, - char **argv); + const char **argv); extern Event *Tclm_ParseMetaTime(Tcl_Interp *interp, long time, int argc, - char **argv); + const char **argv); extern Event *Tclm_ParseMetaKey(Tcl_Interp *interp, long time, int argc, - char **argv); + const char **argv); extern Event *Tclm_ParseMetaSequencerSpecific(Tcl_Interp *interp, long time, - int argc, char **argv); + int argc, const char **argv); extern Event *Tclm_ParseMetaUnknown(Tcl_Interp *interp, long time, int argc, - char **argv); + const char **argv); #endif --- tclmPtch.cxx 1996-08-04 23:47:13.000000000 -0400 +++ tclmPtch.cxx 2012-04-07 14:08:43.000000000 -0400 @@ -37,10 +37,8 @@ #include "tclmidi.h" #include "TclmIntp.h" -static int Tclm_PatchRead(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv); -static int Tclm_PatchFree(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv); +static Tcl_CmdProc Tclm_PatchRead; +static Tcl_CmdProc Tclm_PatchFree; int Tclm_PatchInit(Tcl_Interp *interp, TclmInterp *tclm_interp) @@ -53,7 +51,7 @@ int Tclm_PatchRead(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { Tcl_Channel channel; int mode; @@ -96,7 +94,7 @@ int Tclm_PatchFree(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { TclmInterp *tclm_interp; --- song/EvntTree.cxx.orig 1996-08-05 05:47:38.000000000 +0200 +++ song/EvntTree.cxx 2013-05-14 11:22:45.000000000 +0200 @@ -611,7 +611,7 @@ for (j = 0; j < num_found; j++) new_found[j] = found[j]; new_found[j] = e; - delete found; + delete[] found; found = new_found; num_found++; } @@ -631,7 +631,7 @@ for (j = 0; j < num_found; j++) new_found[j] = found[j]; new_found[j] = e; - delete found; + delete[] found; found = new_found; num_found++; } @@ -735,6 +735,7 @@ assert(new_event != 0); place = rb_insert_b(place, (char *)time, (char *)new_event); } + curr_event = new_event; new_event->SetEventTreeNode(place); return (new_event); @@ -746,7 +747,7 @@ Event *e, *events, *prev; EventTreeNode *n, *next_n; - n = (EventTreeNode *)event.GetEventTreeNode(); + n = event.GetEventTreeNode(); if (n != 0) { e = &event; prev = e->GetPrevEvent(); @@ -785,6 +786,9 @@ } } + if (e->GetNextEvent() == 0 || + (prev && prev->GetEventTreeNode() != n)) + rb_delete_node(n); } else { // This is the only event in the node if (curr_event == e) { @@ -818,7 +822,7 @@ /* get each event in order and delete it */ while ((e = NextEvent()) != 0) DeleteEvent(*e); - + /* then free head */ free(head); head = 0; --- tclmPlay.cxx.orig 1996-08-05 05:47:12.000000000 +0200 +++ tclmPlay.cxx 2013-06-05 15:46:23.000000000 +0200 @@ -43,30 +43,24 @@ #include "TclmDr75.h" #endif +#define SET_CONST_RESULT(string) \ + Tcl_SetResult(interp, (char *)(void *)string, TCL_STATIC) + #if defined(HAVE_SYS_MIDIIOCTL_H) static const int DeviceConfigured = 1; #else static const int DeviceConfigured = 0; #endif -static int Tclm_MidiPlay(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv); -static int Tclm_MidiRecord(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv); -static int Tclm_MidiStop(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv); -static int Tclm_MidiWait(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv); -static int Tclm_MidiDevice(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv); -static int Tclm_MidiTime(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv); -static int Tclm_MidiFeature(ClientData client_data, Tcl_Interp *interp, - int argc, char **argv); -static int Tclm_MidiSend(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv); -static int Tclm_MidiRecv(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv); +static Tcl_CmdProc Tclm_MidiPlay; +static Tcl_CmdProc Tclm_MidiRecord; +static Tcl_CmdProc Tclm_MidiStop; +static Tcl_CmdProc Tclm_MidiWait; +static Tcl_CmdProc Tclm_MidiDevice; +static Tcl_CmdProc Tclm_MidiTime; +static Tcl_CmdProc Tclm_MidiFeature; +static Tcl_CmdProc Tclm_MidiSend; +static Tcl_CmdProc Tclm_MidiRecv; int Tclm_PlayInit(Tcl_Interp *interp, TclmInterp *tclm_interp) @@ -89,7 +83,7 @@ int Tclm_MidiPlay(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { TclmInterp *tclm_interp; Song *song; @@ -130,13 +124,13 @@ dev->GetError(), 0); return (TCL_ERROR); } - Tcl_SetResult(interp, "1", TCL_STATIC); + SET_CONST_RESULT("1"); return (TCL_OK); } int Tclm_MidiRecord(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { TclmInterp *tclm_interp; Song *rsong, *psong; @@ -185,13 +179,13 @@ dev->GetError(), 0); return (TCL_ERROR); } - Tcl_SetResult(interp, "1", TCL_STATIC); + SET_CONST_RESULT("1"); return (TCL_OK); } int Tclm_MidiStop(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { TclmInterp *tclm_interp; MidiDevice *dev; @@ -214,13 +208,13 @@ dev->GetError(), 0); return (TCL_ERROR); } - Tcl_SetResult(interp, "1", TCL_STATIC); + SET_CONST_RESULT("1"); return (TCL_OK); } int Tclm_MidiWait(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { TclmInterp *tclm_interp; MidiDevice *dev; @@ -241,19 +235,20 @@ "to stop\n", dev->GetError(), 0); return (TCL_ERROR); } - Tcl_SetResult(interp, "1", TCL_STATIC); + SET_CONST_RESULT("1"); return (TCL_OK); } int Tclm_MidiDevice(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { TclmInterp *tclm_interp; MidiDevice *dev; ostrstream *buf; unsigned short mask; - char *dev_key, *str, **sub_argv; + const char *dev_key, **sub_argv; + char *str; int con, i, imask, j, mt, sub_argc, value; tclm_interp = (TclmInterp *)client_data; @@ -293,7 +288,7 @@ dev = 0; #endif if (dev == 0) { - Tcl_SetResult(interp, "Out of memory", TCL_STATIC); + SET_CONST_RESULT("Out of memory"); return (TCL_ERROR); } if (!dev->Open(argv[1])) { @@ -303,8 +298,7 @@ } dev_key = tclm_interp->AddDevice(dev); if (dev_key == 0) { - Tcl_SetResult(interp, "Couldn't add device", - TCL_STATIC); + SET_CONST_RESULT("Couldn't add device"); return (TCL_ERROR); } Tcl_AppendResult(interp, dev_key, 0); @@ -317,13 +311,13 @@ return (TCL_ERROR); if (strcmp(sub_argv[0], "close") == 0) { if (i != argc - 1) { - Tcl_SetResult(interp, "Can't perform ops after " - "closing device", TCL_STATIC); + SET_CONST_RESULT("Can't perform ops after " + "closing device"); return (TCL_ERROR); } if (dev_key == 0) { - Tcl_SetResult(interp, "Can't close until after " - "device has been opened", TCL_STATIC); + SET_CONST_RESULT("Can't close until after " + "device has been opened"); return (TCL_ERROR); } tclm_interp->DeleteDevice(dev_key); @@ -465,7 +459,7 @@ int Tclm_MidiTime(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { ostrstream tbuf; unsigned long t; @@ -498,11 +492,11 @@ int Tclm_MidiFeature(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { TclmInterp *tclm_interp; MidiDevice *dev; - char **sub_argv; + const char **sub_argv; int i, sub_argc; if (argc < 3) { @@ -542,7 +536,7 @@ int Tclm_MidiSend(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { TclmInterp *tclm_interp; MidiDevice *dev; @@ -564,7 +558,7 @@ events = new Event *[argc - 2]; if (events == 0) { - Tcl_SetResult(interp, "Out of memory", TCL_STATIC); + SET_CONST_RESULT("Out of memory"); return (TCL_ERROR); } num_events = 0; @@ -584,9 +578,8 @@ num_events++; } } else { - if (strlen(interp->result) == 0) { - Tcl_SetResult(interp, "Out of memory", - TCL_STATIC); + if (strlen(Tcl_GetStringResult(interp)) == 0) { + SET_CONST_RESULT("Out of memory"); return (TCL_ERROR); } } @@ -603,7 +596,7 @@ int Tclm_MidiRecv(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { ostrstream *buf; TclmInterp *tclm_interp; --- tclmCmd.cxx.orig 1996-08-05 05:47:12.000000000 +0200 +++ tclmCmd.cxx 2013-06-05 15:46:37.000000000 +0200 @@ -41,39 +41,27 @@ #include "tclmEvnt.h" #include "patchlvl.h" -static int Tclm_MidiMake(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv); -static int Tclm_MidiFree(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv); -static int Tclm_MidiRead(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv); -static int Tclm_MidiWrite(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv); -static int Tclm_MidiConfig(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv); -static int Tclm_MidiRewind(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv); -static int Tclm_MidiGet(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv); -static int Tclm_MidiPut(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv); -static int Tclm_MidiDelete(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv); -static int Tclm_MidiMerge(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv); -static int Tclm_MidiSplit(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv); -static int Tclm_MidiCopy(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv); -static int Tclm_MidiVersion(ClientData client_data, Tcl_Interp *interp, - int argc, char **argv); -static int Tclm_MidiTrack(ClientData client_data, Tcl_Interp *interp, - int argc, char **argv); -static int Tclm_MidiGrep(ClientData client_data, Tcl_Interp *interp, - int argc, char **argv); +static Tcl_CmdProc Tclm_MidiMake; +static Tcl_CmdProc Tclm_MidiFree; +static Tcl_CmdProc Tclm_MidiRead; +static Tcl_CmdProc Tclm_MidiWrite; +static Tcl_CmdProc Tclm_MidiConfig; +static Tcl_CmdProc Tclm_MidiRewind; +static Tcl_CmdProc Tclm_MidiGet; +static Tcl_CmdProc Tclm_MidiPut; +static Tcl_CmdProc Tclm_MidiDelete; +static Tcl_CmdProc Tclm_MidiMerge; +static Tcl_CmdProc Tclm_MidiSplit; +static Tcl_CmdProc Tclm_MidiCopy; +static Tcl_CmdProc Tclm_MidiVersion; +static Tcl_CmdProc Tclm_MidiTrack; +static Tcl_CmdProc Tclm_MidiGrep; static int Tclm_GetTrack(TclmInterp *tclm_interp, Tcl_Interp *interp, const char *str, Song **song, int *track); +#define SET_CONST_RESULT(string) \ + Tcl_SetResult(interp, (char *)(void *)string, TCL_STATIC) + /* * DllEntryPoint -- @@ -98,8 +86,7 @@ ti = new TclmInterp; if (ti == 0) { - Tcl_SetResult(interp, "Out of memory in Tclmidi_Init", - TCL_STATIC); + SET_CONST_RESULT("Out of memory in Tclmidi_Init"); return (TCL_ERROR); } Tcl_CreateCommand(interp, "midimake", Tclm_MidiMake, ti, 0); @@ -129,7 +116,7 @@ int Tclm_MidiMake(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { TclmInterp *tclm_interp; Song *s; @@ -145,13 +132,13 @@ s = new Song; key = tclm_interp->AddSong(s); Tcl_SetResult(interp, key, TCL_VOLATILE); - delete key; + delete[] key; return (TCL_OK); } int Tclm_MidiFree(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { TclmInterp *tclm_interp; @@ -171,7 +158,7 @@ int Tclm_MidiRead(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { Tcl_Channel channel; int mode; @@ -211,7 +198,7 @@ int Tclm_MidiWrite(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { TclmInterp *tclm_interp; Song *song; @@ -250,12 +237,13 @@ int Tclm_MidiConfig(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { ostrstream *buf; TclmInterp *tclm_interp; Song *song; - char *str, **sub_argv; + char *str; + const char **sub_argv; int i, sub_argc, value; if (argc < 2) { @@ -338,8 +326,8 @@ } break; default: - Tcl_SetResult(interp, "wrong # args: should be " - "{format|division|tracks ?value?}", TCL_STATIC); + SET_CONST_RESULT("wrong # args: should be " + "{format|division|tracks ?value?}"); return (TCL_ERROR); break; } @@ -350,7 +338,7 @@ int Tclm_MidiRewind(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { TclmInterp *tclm_interp; Song *song; @@ -380,7 +368,7 @@ int Tclm_MidiGet(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { ostrstream *buf; long time; @@ -421,7 +409,7 @@ printable = 0; while (!printable) { if ((e = song->NextEvent(track)) == 0) { - Tcl_SetResult(interp, "EOT", TCL_STATIC); + SET_CONST_RESULT("EOT"); printable = 1; } else { buf = new ostrstream; @@ -432,7 +420,7 @@ TCL_VOLATILE); printable = 1; } - delete str; + delete[] str; delete buf; } } @@ -440,7 +428,7 @@ printable = 0; while (!printable) { if ((e = song->PrevEvent(track)) == 0) { - Tcl_SetResult(interp, "EOT", TCL_STATIC); + SET_CONST_RESULT("EOT"); printable = 1; } else { buf = new ostrstream; @@ -459,7 +447,7 @@ if (Tcl_GetLong(interp, argv[3], &time) != TCL_OK) return (TCL_ERROR); if ((events = song->GetEvents((short)track, time)) == 0) - Tcl_SetResult(interp, "EOT", TCL_STATIC); + SET_CONST_RESULT("EOT"); else { for (e = events; e != 0; e = e->GetNextEvent()) { buf = new ostrstream; @@ -477,7 +465,7 @@ int Tclm_MidiPut(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { TclmInterp *tclm_interp; Song *song; @@ -513,18 +501,17 @@ } if ((event = Tclm_ParseEvent(interp, argv[3])) == 0) { - if (strlen(interp->result) == 0) - Tcl_SetResult(interp, "No more memory", TCL_STATIC); + if (strlen(Tcl_GetStringResult(interp)) == 0) + SET_CONST_RESULT("No more memory"); return (TCL_ERROR); } if (event->IsWildcard()) { - Tcl_SetResult(interp, "Can't put wildcard events in a song", - TCL_STATIC); + SET_CONST_RESULT("Can't put wildcard events in a song"); return (TCL_ERROR); } new_e1 = song->PutEvent(track, *event); if (new_e1 == 0) { - Tcl_SetResult(interp, "Couldn't put event", TCL_STATIC); + SET_CONST_RESULT("Couldn't put event"); return (TCL_ERROR); } // check to see if it has a note off too @@ -534,8 +521,7 @@ if (np != 0) { new_e2 = (NoteEvent *)song->PutEvent(track, *np); if (new_e2 == 0) { - Tcl_SetResult(interp, "Couldn't put event", - TCL_STATIC); + SET_CONST_RESULT("Couldn't put event"); return (TCL_ERROR); } ((NoteEvent *)new_e1)->SetNotePair(new_e2); @@ -549,7 +535,7 @@ int Tclm_MidiDelete(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { TclmInterp *tclm_interp; Song *song; @@ -592,17 +578,16 @@ if (Tcl_GetLong(interp, argv[5], (long *)&end) != TCL_OK) return (TCL_ERROR); if (!song->DeleteRange(track, start, end)) { - Tcl_SetResult(interp, "couldn't delete range", - TCL_STATIC); + SET_CONST_RESULT("couldn't delete range"); return (TCL_ERROR); } - Tcl_SetResult(interp, "1", TCL_STATIC); + SET_CONST_RESULT("1"); return (TCL_OK); } if ((event = Tclm_ParseEvent(interp, argv[3])) == 0) { - if (strlen(interp->result) == 0) - Tcl_SetResult(interp, "No more memory", TCL_STATIC); + if (strlen(Tcl_GetStringResult(interp)) == 0) + SET_CONST_RESULT("No more memory"); return (TCL_ERROR); } // If this is a NoteOn/NoteOff pair, get real NoteOff from tree @@ -616,7 +601,7 @@ for (e = events; e != 0 && !(*event == *e); e = e->GetNextEvent()); if (e == 0) { - Tcl_SetResult(interp, "0", TCL_STATIC); + SET_CONST_RESULT("0"); delete ((NoteEvent *)event)->GetNotePair(); delete event; return (TCL_OK); @@ -625,7 +610,7 @@ // find real NoteOff pair and delete it note_off = ((NoteEvent *)e)->GetNotePair(); if (!song->DeleteEvent(track, *note_off)) { - Tcl_SetResult(interp, "0", TCL_STATIC); + SET_CONST_RESULT("0"); delete ((NoteEvent *)event)->GetNotePair(); delete event; return (TCL_OK); @@ -633,7 +618,7 @@ delete ((NoteEvent *)event)->GetNotePair(); } if (!song->DeleteEvent(track, *event)) { - Tcl_SetResult(interp, "0", TCL_STATIC); + SET_CONST_RESULT("0"); if (event->GetType() == NOTEON && ((NoteEvent *)event)->GetNotePair() != 0) delete ((NoteEvent *)event)->GetNotePair(); @@ -641,13 +626,13 @@ return (TCL_OK); } delete event; - Tcl_SetResult(interp, "1", TCL_STATIC); + SET_CONST_RESULT("1"); return (TCL_OK); } int Tclm_MidiMerge(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { TclmInterp *tclm_interp; Song *dest_song, *src_song; @@ -680,7 +665,7 @@ int Tclm_MidiSplit(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { TclmInterp *tclm_interp; Song *src_song, *meta_song, *normal_song; @@ -715,7 +700,7 @@ int Tclm_MidiCopy(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { TclmInterp *tclm_interp; EventTree *tmp_track; @@ -748,6 +733,7 @@ scalar = (double)dest_song->GetDivision() / src_song->GetDivision(); tmp_track = src_song->GetRange(src_track, sstart, send); +fprintf(stderr, "Got tmp_track as %p\n", tmp_track); if (tmp_track == 0) { Tcl_AppendResult(interp, "Couldn't get range from: ", argv[3], " to ", argv[4], 0); @@ -757,20 +743,23 @@ if (!src_song->DeleteRange(src_track, sstart, send)) { Tcl_AppendResult(interp, "Couldn't remove events " "from source track", 0); + delete tmp_track; return (TCL_ERROR); } } if (!dest_song->Add(dest_track, *tmp_track, dstart, scalar)) { Tcl_AppendResult(interp, "Couldn't add range", 0); + delete tmp_track; return (TCL_ERROR); } +fprintf(stderr, "Deleting tmp_track %p\n", tmp_track); delete tmp_track; return (TCL_OK); } int Tclm_MidiVersion(ClientData client_data, Tcl_Interp *interp, int argc, - char *argv[]) + const char *argv[]) { ClientData *dummy; @@ -782,13 +771,13 @@ argv[0], "\"", 0); return (TCL_ERROR); } - Tcl_SetResult(interp, (char *)TCLMIDI_VERSION, TCL_STATIC); + SET_CONST_RESULT(TCLMIDI_VERSION); return (TCL_OK); } int Tclm_MidiTrack(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { TclmInterp *tclm_interp; Song *song; @@ -848,7 +837,7 @@ int Tclm_MidiGrep(ClientData client_data, Tcl_Interp *interp, int argc, - char **argv) + const char **argv) { TclmInterp *tclm_interp; Song *song; @@ -857,6 +846,7 @@ NoteEvent *np; ostrstream *buf; char *str; + int result; if (argc < 4) { Tcl_AppendResult(interp, "wrong # args: should be \"", @@ -888,16 +878,15 @@ num_events = argc - 3; events = new Event *[num_events]; if (events == 0) { - Tcl_SetResult(interp, "No more memory", TCL_STATIC); + SET_CONST_RESULT("No more memory"); return (TCL_ERROR); } for (i = 0; i < num_events; i++) { // parse events events[i] = Tclm_ParseEvent(interp, argv[i + 3]); if (events[i] == 0) { - if (strlen(interp->result) == 0) - Tcl_SetResult(interp, "No more memory", - TCL_STATIC); + if (strlen(Tcl_GetStringResult(interp)) == 0) + SET_CONST_RESULT("No more memory"); i--; for (; i >= 0; i--) { if (events[i]->GetType() == NOTEON) { @@ -913,9 +902,11 @@ } } if (!song->Grep(track, events, num_events, &matched, &num_matched)) { - Tcl_SetResult(interp, "midigrep failed", TCL_STATIC); - return (TCL_ERROR); - } + SET_CONST_RESULT("midigrep failed"); + result = TCL_ERROR; + } else + result = TCL_OK; + for (i = 0; i < num_events; i++) { if (events[i]->GetType() == NOTEON) { np = ((NoteEvent *)events[i])->GetNotePair(); @@ -924,33 +915,33 @@ } delete events[i]; } - delete events; + delete[] events; for (i = 0; i < num_matched; i++) { buf = new ostrstream; Tclm_PrintEvent(*buf, matched[i]); str = buf->str(); if (str != 0 && str[0] != '\0') Tcl_AppendElement(interp, str); - delete str; + delete[] str; delete buf; } - delete matched; + delete[] matched; + return (result); return (TCL_OK); } - int Tclm_GetTrack(TclmInterp *tclm_interp, Tcl_Interp *interp, const char *str, Song **song, int *track) { - char **sub_argv; + const char **sub_argv; int sub_argc; - if (Tcl_SplitList(interp, (char *)str, &sub_argc, &sub_argv) != TCL_OK) + if (Tcl_SplitList(interp, str, &sub_argc, &sub_argv) != TCL_OK) return (TCL_ERROR); if (sub_argc != 2) { - Tcl_SetResult(interp, "bad track designation: " - "should be \"{MidiID Track}\"", TCL_STATIC); + SET_CONST_RESULT("bad track designation: " + "should be \"{MidiID Track}\""); Tcl_Ckfree((char *)sub_argv); return (TCL_ERROR); }