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);