games/ri-li crashes when a game is started because our libmikmod port is missing a fix which is already present in the upstream code.
Perhaps mikmod should be updated but I'd rather just fix this for now. The crash happens because of.samples is NULL when dereferenced. While here, make this port honour custom CFLAGS during the build so that 'make DEBUG="-g"' works. ok? Index: Makefile =================================================================== RCS file: /cvs/ports/audio/libmikmod/Makefile,v retrieving revision 1.22 diff -u -p -r1.22 Makefile --- Makefile 10 Aug 2012 20:11:41 -0000 1.22 +++ Makefile 31 Dec 2012 00:44:34 -0000 @@ -4,7 +4,7 @@ COMMENT= mikmod sound library VERSION= 3.1.10 DISTNAME= libmikmod-${VERSION} -REVISION= 9 +REVISION= 10 SHARED_LIBS += mikmod 2.4 # .2.4 CATEGORIES= audio devel @@ -25,7 +25,7 @@ WANTLIB= sndio SEPARATE_BUILD= Yes CONFIGURE_STYLE= gnu USE_LIBTOOL= Yes -CONFIGURE_ENV= CFLAGS="-DDRV_SNDIO" LIBRARY_LIB="-lsndio" +CONFIGURE_ENV= CFLAGS="-DDRV_SNDIO ${CFLAGS}" LIBRARY_LIB="-lsndio" CONFIGURE_ARGS+= ${CONFIGURE_SHARED} CONFIGURE_ARGS+= --disable-dl \ --disable-oss \ Index: patches/patch-playercode_mloader_c =================================================================== RCS file: patches/patch-playercode_mloader_c diff -N patches/patch-playercode_mloader_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-playercode_mloader_c 31 Dec 2012 00:31:48 -0000 @@ -0,0 +1,20 @@ +$OpenBSD$ +--- playercode/mloader.c.orig Mon Dec 31 01:30:02 2012 ++++ playercode/mloader.c Mon Dec 31 01:30:54 2012 +@@ -450,10 +450,12 @@ MODULE* Player_LoadGeneric_internal(MREADER *reader,in + if (!l->Init || l->Init()) { + _mm_rewind(modreader); + ok = l->Load(curious); +- /* propagate inflags=flags for in-module samples */ +- for (t = 0; t < of.numsmp; t++) +- if (of.samples[t].inflags == 0) +- of.samples[t].inflags = of.samples[t].flags; ++ if (ok) { ++ /* propagate inflags=flags for in-module samples */ ++ for (t = 0; t < of.numsmp; t++) ++ if (of.samples[t].inflags == 0) ++ of.samples[t].inflags = of.samples[t].flags; ++ } + } else + ok = 0; +