View Issue Details

IDProjectCategoryView StatusLast Update
0001180OpenMPT[All Projects] libopenmptpublic2019-01-13 14:36
ReporterjcowgillAssigned Tomanx 
PrioritynormalSeverityminorReproducibilityhave not tried
Status resolvedResolutionfixed 
Product VersionOpenMPT 1.28.01.00 / libopenmpt 0.4.0 (upgrade first) 
Target VersionFixed in VersionOpenMPT 1.28.02.00 / libopenmpt 0.4.1 (upgrade first) 
Summary0001180: CSoundFile compat API is missing from shared libraries in libopenmpt 0.4.0
Description

In the libmodplug layer in libopenmpt 0.4.0, it seems that all the CSoundFile functions have been made non-public (hidden visibility). This causes undefined references in applications which use the compat layer and the CSoundFile API. Was this an intentional change or an oversight?

Steps To Reproduce

With libopenmpt 0.4.0 autotools:

$ ./configure --enable-libopenmpt_modplug
$ make
$ objdump -T .libs/libopenmpt_modplug.so | grep CSoundFile
<empty>
$

With 0.3.13, this prints lots of symbols.

TagsNo tags attached.
Has the bug occurred in previous versions?
Tested code revision (in case you know it)

Activities

manx

manx

2018-12-24 19:13

administrator   ~0003771

This is certainly a bug and was not intentional.

I'll release a fixed 0.4.1 in the next 2 days.

Until then, the attached patch should restore the public symbols.



libmodplug-no-exported-cpp-api-quickfix-v1.patch (745 bytes)
--- libopenmpt-0.4.0+release.autotools.original/libopenmpt/libopenmpt_modplug_cpp.cpp	2018-08-30 15:03:30.000000000 +0200
+++ libopenmpt-0.4.0+release.autotools/libopenmpt/libopenmpt_modplug_cpp.cpp	2018-12-24 20:07:59.972914902 +0100
@@ -51,8 +51,6 @@
 /* libmodplug C++ header is broken for MSVC DLL builds */
 #define MODPLUG_STATIC
 #endif /* _MSC_VER */
-#include "libmodplug/stdafx.h"
-#include "libmodplug/sndfile.h"
 
 #ifdef _MSC_VER
 #define LIBOPENMPT_MODPLUG_API
@@ -60,6 +58,11 @@
 #define LIBOPENMPT_MODPLUG_API LIBOPENMPT_API_HELPER_EXPORT
 #endif /* _MSC_VER */
 
+class LIBOPENMPT_MODPLUG_API CSoundFile;
+
+#include "libmodplug/stdafx.h"
+#include "libmodplug/sndfile.h"
+
 namespace {
 template <class T>
 void Clear( T & x )
jcowgill

jcowgill

2018-12-24 20:58

reporter   ~0003772

Thanks! That patch works.

manx

manx

2018-12-25 06:47

administrator   ~0003773

Fixed in r11110 (0.5) and r11111 (0.4.1-pre.1).

manx

manx

2018-12-26 06:41

administrator   ~0003774

0.4.1 release will take about 2 weeks rather than 2 days

Issue History

Date Modified Username Field Change
2018-12-24 18:41 jcowgill New Issue
2018-12-24 18:56 manx Assigned To => manx
2018-12-24 18:56 manx Status new => assigned
2018-12-24 19:13 manx File Added: libmodplug-no-exported-cpp-api-quickfix-v1.patch
2018-12-24 19:13 manx Note Added: 0003771
2018-12-24 20:58 jcowgill Note Added: 0003772
2018-12-25 06:47 manx Status assigned => resolved
2018-12-25 06:47 manx Resolution open => fixed
2018-12-25 06:47 manx Note Added: 0003773
2018-12-26 06:41 manx Note Added: 0003774
2019-01-13 14:36 manx Fixed in Version => OpenMPT 1.28.02.00 / libopenmpt 0.4.1 (upgrade first)