fluid-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[fluid-dev] fluidsyth-1.0.3 stack overflow fix


From: S.Pavlishin
Subject: [fluid-dev] fluidsyth-1.0.3 stack overflow fix
Date: Tue, 26 Aug 2003 17:36:24 +0700

Hello.
 
This is the patch to fix stack overflow when close application.
 
---
Index: src/fluid_midi.c
===================================================================
RCS file: /cvsroot/fluid/fluidsynth/src/fluid_midi.c,v
retrieving revision 1.2
diff -u -r1.2 fluid_midi.c
--- src/fluid_midi.c    3 Apr 2003 21:32:56 -0000       1.2
+++ src/fluid_midi.c    26 Aug 2003 10:31:38 -0000
@@ -681,12 +681,13 @@
 
/*
 * delete_fluid_midi_event
+ *
+ * XXX do not use recursion to delete linked list
+ * because it causes stack overflow
+ *
 */
int delete_fluid_midi_event(fluid_midi_event_t* evt)
{
-  if (evt->next != NULL) {
-    delete_fluid_midi_event(evt->next);
-  }
  FLUID_FREE(evt);
  return FLUID_OK;
}
@@ -881,9 +882,17 @@
  if (track->name != NULL) {
    FLUID_FREE(track->name);
  }
-  if (track->first != NULL) {
-    delete_fluid_midi_event(track->first);
+
+  /*
+   * clear single-linked list
+   */
+  while(track->first != NULL) {
+       fluid_midi_event_t *event = track->first;
+       track->first = event->next;
+
+       delete_fluid_midi_event(event);
  }
+
  FLUID_FREE(track);
  return FLUID_OK;
} 
---
 
 
Regards,
Sergey Pavlishin.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]