Hi,
yesterday, I uploaded ircmarkers 0.12-1 to unstable. The diff is fairly small,
and I'd like to request the inclusion of that version in testing.
The --help output mixed up latitude and longitude, and because of that a user
triggered a segfault that was caused by all markers being outside of the
(wrongly specified) visible map area. This patch fixes the --help output,
catches the segfault, and print a warning in the case all markers are
invisible.
Thanks for considering. (Please Cc: me in replies, I'm not subscribed.)
--- /home/cb/tmp/gxyE5hqYvM/ircmarkers-0.11/debian/changelog 2006-12-21 18:26:56.890792560 +0100
+++ /home/cb/tmp/BBI7cKdQRM/ircmarkers-0.12/debian/changelog 2006-12-21 18:26:57.138754864 +0100
@@ -1,3 +1,12 @@
+ircmarkers (0.12-1) unstable; urgency=low
+
+ * Fix segfault when all markers are outside the visible area, and print
+ warning in that case.
+ * The -x and -y documentation was mixed up in the --help output.
+ Spotted by Andreas Gockel.
+
+ -- Christoph Berg <myon@debian.org> Wed, 20 Dec 2006 16:08:28 +0100
+
ircmarkers (0.11-1) unstable; urgency=low
* Support Maidenhead (QTH) locator format.
diff -Nru /home/cb/tmp/gxyE5hqYvM/ircmarkers-0.11/ircmarkers /home/cb/tmp/BBI7cKdQRM/ircmarkers-0.12/ir
cmarkers
--- /home/cb/tmp/gxyE5hqYvM/ircmarkers-0.11/ircmarkers 2006-11-03 17:52:36.000000000 +0100
+++ /home/cb/tmp/BBI7cKdQRM/ircmarkers-0.12/ircmarkers 2006-12-20 15:24:48.000000000 +0100
@@ -32,8 +32,8 @@
usage: $0 [options] config [inputmap outputmap]
-q be quiet
-o command configuration command
--x west/east latitude bounds of input map
--y south/north longitude bounds of input map
+-x west/east longitude bounds of input map
+-y south/north latitude bounds of input map
EOT
exit 0;
}
@@ -150,11 +150,15 @@
}
if($config->{markers}) {
+ my $visible;
foreach my $marker (@{$config->{markers}}) {
next unless $marker->{visible};
+ $visible = 1;
$config->labelsize($marker);
$map->draw_dot_new($marker);
}
+ print "warning: all markers are outside the visible area\n"
+ unless $visible or $config->{quiet};
$map->compute_overlap() if($config->{overlap_correction});
foreach my $marker (@{$config->{markers}}) {
next unless $marker->{visible};
diff -Nru /home/cb/tmp/gxyE5hqYvM/ircmarkers-0.11/overlap.c /home/cb/tmp/BBI7cKdQRM/ircmarkers-0.12/ove
rlap.c
--- /home/cb/tmp/gxyE5hqYvM/ircmarkers-0.11/overlap.c 2006-02-22 01:44:19.000000000 +0100
+++ /home/cb/tmp/BBI7cKdQRM/ircmarkers-0.12/overlap.c 2006-12-20 14:36:06.000000000 +0100
@@ -207,8 +207,7 @@
assert(nm);
markers = nm;
}
- if (15 !=
- scanf("%u\t%u\t%u\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n",
+ i = scanf("%u\t%u\t%u\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n",
&(markers[nb_markers].id),
&(markers[nb_markers].x),
&(markers[nb_markers].y),
@@ -223,8 +222,9 @@
&(markers[nb_markers].txt.top),
&(markers[nb_markers].txt.bottom),
&(markers[nb_markers].txt.width),
- &(markers[nb_markers].txt.height)))
- assert(0);
+ &(markers[nb_markers].txt.height));
+ if (i == -1) continue;
+ if (i != 15) assert(0);
#ifdef DEBUG
markers[nb_markers].orig_txt_x = markers[nb_markers].txt.left;
markers[nb_markers].orig_txt_y = markers[nb_markers].txt.bottom;
Christoph
--
cb@df7cb.de | http://www.df7cb.de/
Attachment:
signature.asc
Description: Digital signature