Hello,
recently I built grip from ports on my machine running -current. Shortly
after starting to rip a track grip crashes with a bus error.

gdb trace:

(gdb) bt
#0  0x0000000056086e80 in g_convert_with_iconv ()
   from /usr/local/lib/libglib-2.0.so.1600.0
#1  0x00000000560870c8 in g_convert ()
   from /usr/local/lib/libglib-2.0.so.1600.0
#2  0x00000000560877cc in g_locale_from_utf8 ()
   from /usr/local/lib/libglib-2.0.so.1600.0
#3  0x0000000000123658 in __register_frame_info ()
#4  0x0000000000123658 in __register_frame_info ()
Previous frame identical to this frame (corrupt stack?)

The only call of g_locale_from_utf8 is in src/launch.c


"make" complains about

launch.c: In function `ArgsToLocale':
launch.c:249: warning: passing arg 4 of `g_locale_from_utf8' from incompatible 
pointer type

g_locale_from_utf8 is called with a pointer to int instead of to gsize.

The attached patch fixes this for me. Please test it on other archs and
commit it. I notified the maintainer, but he hadn't time to test this
yet.

Regards,
Markus

Index: Makefile
===================================================================
RCS file: /cvs/ports/audio/grip/Makefile,v
retrieving revision 1.28
diff -u -p -r1.28 Makefile
--- Makefile    15 Dec 2007 18:56:35 -0000      1.28
+++ Makefile    4 May 2008 19:55:10 -0000
@@ -3,7 +3,7 @@
 COMMENT=       front-end to external cd audio rippers and mp3 encoders
 
 DISTNAME=      grip-3.2.0
-PKGNAME=       ${DISTNAME}p8
+PKGNAME=       ${DISTNAME}p9
 CATEGORIES=    audio
 
 HOMEPAGE=      http://www.nostatic.org/grip/
Index: patches/patch-src_launch_c
===================================================================
RCS file: patches/patch-src_launch_c
diff -N patches/patch-src_launch_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_launch_c  4 May 2008 19:55:10 -0000
@@ -0,0 +1,12 @@
+$OpenBSD$
+--- src/launch.c.orig  Thu Apr 15 20:20:44 2004
++++ src/launch.c       Wed Apr 23 17:26:10 2008
+@@ -243,7 +243,7 @@ void ArgsToLocale(GString **args)
+   char *new_str;
+   GString *new_arg;
+   int pos;
+-  int len;
++  gsize len;
+ 
+   for(pos=1;args[pos];pos++) {
+     new_str=g_locale_from_utf8(args[pos]->str,-1,NULL,&len,NULL);

Reply via email to