[Buildroot] [PATCH 1/1] package/libfreeimage: fix musl build
Fabrice Fontaine
fontaine.fabrice at gmail.com
Tue May 24 17:28:19 UTC 2022
Fix the following musl build failure:
In file included from /nvmedata/autobuild/instance-12/output-1/per-package/libfreeimage/host/armeb-buildroot-linux-musleabi/sysroot/usr/include/pthread.h:31,
from /nvmedata/autobuild/instance-12/output-1/per-package/libfreeimage/host/armeb-buildroot-linux-musleabi/include/c++/9.4.0/armeb-buildroot-linux-musleabi/bits/gthr-default.h:35,
from /nvmedata/autobuild/instance-12/output-1/per-package/libfreeimage/host/armeb-buildroot-linux-musleabi/include/c++/9.4.0/armeb-buildroot-linux-musleabi/bits/gthr.h:148,
from /nvmedata/autobuild/instance-12/output-1/per-package/libfreeimage/host/armeb-buildroot-linux-musleabi/include/c++/9.4.0/ext/atomicity.h:35,
from /nvmedata/autobuild/instance-12/output-1/per-package/libfreeimage/host/armeb-buildroot-linux-musleabi/include/c++/9.4.0/bits/basic_string.h:39,
from /nvmedata/autobuild/instance-12/output-1/per-package/libfreeimage/host/armeb-buildroot-linux-musleabi/include/c++/9.4.0/string:55,
from Source/Utilities.h:44,
from Source/FreeImage/PluginPSD.cpp:27:
Source/FreeImage/PluginPSD.cpp: In function 'BOOL Save(FreeImageIO*, FIBITMAP*, fi_handle, int, int, void*)':
Source/FreeImage/PluginPSD.cpp:130:10: error: cannot convert 'std::nullptr_t' to 'BOOL' {aka 'int'} in return
130 | return NULL;
| ^~~~
Fixes:
- http://autobuild.buildroot.org/results/f9c4ba83a506d374d8a28673aac619d8ff80f3da
Signed-off-by: Fabrice Fontaine <fontaine.fabrice at gmail.com>
---
.../0004-fixed-C-11-warnings.patch | 94 +++++++++++++++++++
1 file changed, 94 insertions(+)
create mode 100644 package/libfreeimage/0004-fixed-C-11-warnings.patch
diff --git a/package/libfreeimage/0004-fixed-C-11-warnings.patch b/package/libfreeimage/0004-fixed-C-11-warnings.patch
new file mode 100644
index 0000000000..cf9c47303a
--- /dev/null
+++ b/package/libfreeimage/0004-fixed-C-11-warnings.patch
@@ -0,0 +1,94 @@
+fixed C++11 warnings
+
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice at gmail.com>
+[Retrieved from: https://sourceforge.net/p/freeimage/svn/1896]
+
+Index: trunk/Source/FreeImage/CacheFile.cpp
+===================================================================
+--- trunk/Source/FreeImage/CacheFile.cpp (révision 1895)
++++ trunk/Source/FreeImage/CacheFile.cpp (révision 1896)
+@@ -147,10 +147,14 @@
+ m_current_block->data = new BYTE[BLOCK_SIZE];
+
+ fseek(m_file, m_current_block->nr * BLOCK_SIZE, SEEK_SET);
+- fread(m_current_block->data, BLOCK_SIZE, 1, m_file);
+-
+- m_page_cache_mem.splice(m_page_cache_mem.begin(), m_page_cache_disk, it->second);
+- m_page_map[nr] = m_page_cache_mem.begin();
++ if (fread(m_current_block->data, BLOCK_SIZE, 1, m_file) == 1) {
++ m_page_cache_mem.splice(m_page_cache_mem.begin(), m_page_cache_disk, it->second);
++ m_page_map[nr] = m_page_cache_mem.begin();
++ }
++ else {
++ FreeImage_OutputMessageProc(FIF_UNKNOWN, "Failed to lock a block in CacheFile");
++ return NULL;
++ }
+ }
+
+ // if the memory cache size is too large, swap an item to disc
+Index: trunk/Source/FreeImage/MultiPage.cpp
+===================================================================
+--- trunk/Source/FreeImage/MultiPage.cpp (révision 1895)
++++ trunk/Source/FreeImage/MultiPage.cpp (révision 1896)
+@@ -271,8 +271,8 @@
+ }
+ }
+
+- std::auto_ptr<FIMULTIBITMAP> bitmap (new FIMULTIBITMAP);
+- std::auto_ptr<MULTIBITMAPHEADER> header (new MULTIBITMAPHEADER);
++ std::unique_ptr<FIMULTIBITMAP> bitmap (new FIMULTIBITMAP);
++ std::unique_ptr<MULTIBITMAPHEADER> header (new MULTIBITMAPHEADER);
+ header->m_filename = filename;
+ // io is default
+ header->node = node;
+@@ -339,8 +339,8 @@
+ PluginNode *node = list->FindNodeFromFIF(fif);
+
+ if (node) {
+- std::auto_ptr<FIMULTIBITMAP> bitmap (new FIMULTIBITMAP);
+- std::auto_ptr<MULTIBITMAPHEADER> header (new MULTIBITMAPHEADER);
++ std::unique_ptr<FIMULTIBITMAP> bitmap (new FIMULTIBITMAP);
++ std::unique_ptr<MULTIBITMAPHEADER> header (new MULTIBITMAPHEADER);
+ header->io = *io;
+ header->node = node;
+ header->fif = fif;
+Index: trunk/Source/FreeImage/PSDParser.cpp
+===================================================================
+--- trunk/Source/FreeImage/PSDParser.cpp (révision 1895)
++++ trunk/Source/FreeImage/PSDParser.cpp (révision 1896)
+@@ -97,7 +97,7 @@
+ template <int N>
+ class PSDGetValue {
+ public:
+- static inline int get(const BYTE * iprBuffer) {} // error
++ static inline int get(const BYTE * iprBuffer) { return -1; } // error
+ };
+
+ template <>
+Index: trunk/Source/FreeImage/PluginPSD.cpp
+===================================================================
+--- trunk/Source/FreeImage/PluginPSD.cpp (révision 1895)
++++ trunk/Source/FreeImage/PluginPSD.cpp (révision 1896)
+@@ -127,7 +127,7 @@
+ static BOOL DLL_CALLCONV
+ Save(FreeImageIO *io, FIBITMAP *dib, fi_handle handle, int page, int flags, void *data) {
+ if(!handle) {
+- return NULL;
++ return FALSE;
+ }
+ try {
+ psdParser parser;
+Index: trunk/Source/FreeImage/PluginHDR.cpp
+===================================================================
+--- trunk/Source/FreeImage/PluginHDR.cpp (révision 1895)
++++ trunk/Source/FreeImage/PluginHDR.cpp (révision 1896)
+@@ -244,7 +244,8 @@
+ }
+ else if((buf[0] == '#') && (buf[1] == 0x20)) {
+ header_info->valid |= RGBE_VALID_COMMENT;
+- strcpy(header_info->comment, buf);
++ strncpy(header_info->comment, buf, HDR_MAXLINE - 1);
++ header_info->comment[HDR_MAXLINE - 1] = '\0';
+ }
+ }
+ if(!bHeaderFound || !bFormatFound) {
--
2.35.1
More information about the buildroot
mailing list