http://www.jwz.org/xscreensaver/xscreensaver-5.11.tar.gz
[xscreensaver] / hacks / apple2-main.c
index dc42ae981dd36f06136a6295866429ee093d7d25..facaf7173f1526cf65e22a0086289168162df560 100644 (file)
@@ -1,4 +1,4 @@
-/* xscreensaver, Copyright (c) 1998-2006 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1998-2010 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -569,6 +569,9 @@ image_loaded_cb (Screen *screen, Window window, Drawable p,
      image (regardless of whether it started as TrueColor/PseudoColor.)
    */
   pick_a2_subimage (dpy, window, image, buf32, w, h);
+  free(image->data);
+  image->data = 0;
+  XDestroyImage(image);
 
   /* Then dither the 32bpp image to a 6-color Apple][ colormap.
    */
@@ -784,6 +787,7 @@ static void slideshow_controller(apple2_sim_t *sim, int *stepno,
     free(mine->render_img);
     free(mine->img_filename);
     free(mine);
+    mine = 0;
     return;
 
   }
@@ -905,6 +909,9 @@ launch_text_generator (struct terminal_controller_data *mine)
       sprintf (buf, "%.100s: %.100s", progname, program);
       perror(buf);
     }
+
+  free(oprogram);
+  free(program);
 }
 
 static void
@@ -1526,6 +1533,7 @@ terminal_controller(apple2_sim_t *sim, int *stepno, double *next_actiontime)
   case A2CONTROLLER_FREE:
     terminal_closegen(mine);
     free(mine);
+    mine = 0;
     return;
   }
 }
@@ -1888,6 +1896,7 @@ basic_controller(apple2_sim_t *sim, int *stepno, double *next_actiontime)
 
   case A2CONTROLLER_FREE:
     free(mine);
+    mine = 0;
     break;
   }