Package: playmidi
Version: 2.4debian-10
Severity: wishlist
Usertags: goto-cc

During a rebuild of all Debian packages in a clean sid chroot (using cowbuilder
and pbuilder) the build failed with the following error. Please note that we
use our research compiler tool-chain (using tools from the cbmc package), which
permits extended reporting on type inconsistencies at link time.

[...]
cc -Wl,-z,relro -o playmidi playmidi.o readmidi.o playevents.o patchload.o 
emumidi.o io_ncurses.o -L/usr/lib -L/usr/lib64 -lncurses

error: conflicting function declarations "gus_load"
old definition in module playmidi file playmidi.c line 70
signed int (signed int)
new definition in module patchload file patchload.c line 85
void (signed int pgm)
Makefile:83: recipe for target 'playmidi' failed
make[1]: *** [playmidi] Error 64
make[1]: Leaving directory 
'/srv/jenkins-slave/workspace/sid-goto-cc-playmidi/playmidi-2.4debian'
debian/rules:21: recipe for target 'build-stamp' failed
make: *** [build-stamp] Error 2

This conflict is really just an error in the declaration here:

http://sources.debian.net/src/playmidi/2.4debian-10/playmidi.c?hl=70#L70

This promises a return value, which doesn't exist:

http://sources.debian.net/src/playmidi/2.4debian-10/patchload.c?hl=85#L85

Fixing the above declaration will ensure that no one inadvertently uses the
return value, which would result in undefined behaviour.

Best,
Michael

Attachment: pgpYVrzoYWhlZ.pgp
Description: PGP signature

Reply via email to