Blob Blame History Raw
diff -Naur dvdisaster-0.70/CHANGELOG dvdisaster-0.70.2/CHANGELOG
--- dvdisaster-0.70/CHANGELOG	2006-07-30 13:55:57.000000000 +0200
+++ dvdisaster-0.70.2/CHANGELOG	2006-09-08 21:50:10.000000000 +0200
@@ -1,4 +1,8 @@
 
+0.70 (pl2)
+	- fixed crash by inappropriate g_free() on Pango layout (thanks to Dmitry
+	  for pointing this out)
+
 0.70 (pl-1) 30-07-2006
 	- fixed a bug in read-adaptive for RS02 which would sometimes prevent it 
 	  from properly restarting a previously interrupted reading session.
diff -Naur dvdisaster-0.70/closure.c dvdisaster-0.70.2/closure.c
--- dvdisaster-0.70/closure.c	2006-07-30 12:05:22.000000000 +0200
+++ dvdisaster-0.70.2/closure.c	2006-09-03 13:44:23.000000000 +0200
@@ -590,6 +590,7 @@
 
    cond_free(Closure->methodName);
    cond_free(Closure->dotFile);
+   cond_free(Closure->logFile);
    cond_free(Closure->binDir);
    cond_free(Closure->docDir);
    cond_free(Closure->browser);
diff -Naur dvdisaster-0.70/configure dvdisaster-0.70.2/configure
--- dvdisaster-0.70/configure	2006-07-09 20:05:33.000000000 +0200
+++ dvdisaster-0.70.2/configure	2006-07-30 20:07:06.000000000 +0200
@@ -21,7 +21,7 @@
 
 PACKAGE dvdisaster 0.70
 
-DEFINE_STRING RELEASE_MICRO "1"
+DEFINE_STRING RELEASE_MICRO "2"
 DEFINE_STRING RELEASE_STATUS "patch"
 #DEFINE_STRING RELEASE_STATUS "devel"
 #DEFINE_STRING RELEASE_STATUS "rc"
diff -Naur dvdisaster-0.70/curve.c dvdisaster-0.70.2/curve.c
--- dvdisaster-0.70/curve.c	2006-06-15 18:16:50.000000000 +0200
+++ dvdisaster-0.70.2/curve.c	2006-09-08 21:39:38.000000000 +0200
@@ -33,7 +33,7 @@
 {  Curve *curve = g_malloc0(sizeof(Curve));
 
    curve->widget     = widget;
-   curve->layout     = gtk_widget_create_pango_layout(widget, NULL); REMEMBER(curve->layout);
+   curve->layout     = gtk_widget_create_pango_layout(widget, NULL);
    curve->leftLabel  = g_strdup(left_label); 
    curve->leftFormat = g_strdup(left_format);
    curve->bottomFormat = bottom_format;   
@@ -57,7 +57,7 @@
 
 void FreeCurve(Curve *curve)
 {
-   g_free(curve->layout);
+   g_object_unref(curve->layout);
    g_free(curve->leftLabel);
    g_free(curve->leftFormat);
    g_free(curve->fvalue);
diff -Naur dvdisaster-0.70/ecc-rs01.c dvdisaster-0.70.2/ecc-rs01.c
--- dvdisaster-0.70/ecc-rs01.c	2006-04-17 20:47:00.000000000 +0200
+++ dvdisaster-0.70.2/ecc-rs01.c	2006-09-08 21:45:03.000000000 +0200
@@ -72,14 +72,14 @@
 
    if(wl)
    {  if(wl->fixCurve) FreeCurve(wl->fixCurve);
-      g_free(method->widgetList);
+      if(method->widgetList)
+       g_free(method->widgetList);
 
       if(wl->cmpSpiral)
 	FreeSpiral(wl->cmpSpiral);
 
       if(wl->cmpLayout)
-	g_free(wl->cmpLayout);
-
+	g_object_unref(wl->cmpLayout);
    }
 }
 
diff -Naur dvdisaster-0.70/ecc-rs02.c dvdisaster-0.70.2/ecc-rs02.c
--- dvdisaster-0.70/ecc-rs02.c	2006-04-17 23:48:00.000000000 +0200
+++ dvdisaster-0.70.2/ecc-rs02.c	2006-09-08 21:46:08.000000000 +0200
@@ -24,14 +24,6 @@
 #include "rs02-includes.h"
 
 /***
- *** The RS02 codec is work in progress.
- ***
- * Do not use for production work; 
- * do not assume created .ecc data and images to be compatible with
- * the final release!
- */
-
-/***
  *** Method registration
  ***/
 
@@ -78,8 +70,16 @@
 {  RS02Widgets *wl = (RS02Widgets*)method->widgetList;
 
    if(wl)
-   {  
-      g_free(method->widgetList);
+   {  if(wl->fixCurve) FreeCurve(wl->fixCurve);
+      if(method->widgetList)
+       g_free(method->widgetList);
+
+      if(wl->cmpSpiral)
+	FreeSpiral(wl->cmpSpiral);
+
+      if(wl->cmpLayout)
+	g_object_unref(wl->cmpLayout);
+
    }
 }
 
diff -Naur dvdisaster-0.70/fingerprints.md5 dvdisaster-0.70.2/fingerprints.md5
--- dvdisaster-0.70/fingerprints.md5	2006-07-30 15:28:31.000000000 +0200
+++ dvdisaster-0.70.2/fingerprints.md5	2006-09-08 21:51:00.000000000 +0200
@@ -6,13 +6,13 @@
 48a04499df58f9aad0923e8c5409513b *scsi-layer.h
 f4be9160aae464f3469b2f3815be3670 *udf.h
 daa7ec033afb7fcfa5e4591cdda6ffac *bitmap.c
-0c5f0a45dfee559be1b553e5dab042f0 *closure.c
+4d3291f5009fc27cb9f08a2101db901f *closure.c
 e0c423fffb94956009695231decaa295 *crc32.c
-c8264cf87e441cd33b55611988a58548 *curve.c
+f6bfabe0fea5d9cc05500692056d9a77 *curve.c
 bb2e84a8b150cd40a8ee58215c341eb9 *debug.c
 889d05ae305a7412c7a816e12af8ef2b *dvdisaster.c
-61bd5e47034125cb7062e15eeb68c62c *ecc-rs01.c
-717006a7b52a55416d526ca5734cdf61 *ecc-rs02.c
+445852905059a696fc89b86015eefc72 *ecc-rs01.c
+e3556e136b8303501536314332fb0df2 *ecc-rs02.c
 255f47cdc89a7edb4c091a5e92379550 *endian.c
 547b08e6c859b478d36ee85db8c234bc *file.c
 b1a8a70dd7cff1fe05c263e8a2c7b2ed *galois.c
@@ -36,12 +36,12 @@
 1edd34d022eaea0ceb3b438754cf0d67 *rs01-common.c
 9fe8a9262fe22a60ebe505c5a3fc39f1 *rs01-create.c
 b69dfaef06f296edc503b53d8461dac4 *rs01-fix.c
-b1465b955acea866d333ef214902e714 *rs01-verify.c
+888ed1599f9d6aca99e00e631539e08a *rs01-verify.c
 f2a5659cf67864e7395949acacbb5858 *rs01-window.c
 5b73969c64f95c3decc26e941743a943 *rs02-common.c
 7493ec6424c5315b73625d55eb4fc882 *rs02-create.c
 04e1f02fbf762aeef2f984617be686ad *rs02-fix.c
-40c6efacc4c0d2b716af6d884ab1549b *rs02-verify.c
+f747d0e89474d40f3833da319fcdc88b *rs02-verify.c
 6a12091704c2ded29f3f7ef64c6e1dab *rs02-window.c
 cc85e2cdb2d8a2b9cd9544c38bc459ed *scsi-darwin.c
 b826f04c5a5f28c912f1a9eec100a670 *scsi-freebsd.c
diff -Naur dvdisaster-0.70/rs01-verify.c dvdisaster-0.70.2/rs01-verify.c
--- dvdisaster-0.70/rs01-verify.c	2006-06-18 13:16:06.000000000 +0200
+++ dvdisaster-0.70.2/rs01-verify.c	2006-09-08 21:41:28.000000000 +0200
@@ -139,7 +139,7 @@
 
    if(!wl->cmpLayout)
    {  SetSpiralWidget(wl->cmpSpiral, widget);
-      wl->cmpLayout = gtk_widget_create_pango_layout(widget, NULL); REMEMBER(wl->cmpLayout);
+      wl->cmpLayout = gtk_widget_create_pango_layout(widget, NULL);
    }
 
    SetText(wl->cmpLayout, _("Missing sectors"), &w, &h);
diff -Naur dvdisaster-0.70/rs02-verify.c dvdisaster-0.70.2/rs02-verify.c
--- dvdisaster-0.70/rs02-verify.c	2006-07-29 21:00:33.000000000 +0200
+++ dvdisaster-0.70.2/rs02-verify.c	2006-09-08 21:46:24.000000000 +0200
@@ -136,7 +136,7 @@
 
    if(!wl->cmpLayout)
    {  SetSpiralWidget(wl->cmpSpiral, widget);
-      wl->cmpLayout = gtk_widget_create_pango_layout(widget, NULL); REMEMBER(wl->cmpLayout);
+      wl->cmpLayout = gtk_widget_create_pango_layout(widget, NULL);
    }
 
    SetText(wl->cmpLayout, _("Missing sectors"), &w, &h);