-
Notifications
You must be signed in to change notification settings - Fork 2.7k
rawtherapee: fix build with glibc 2.36 #40692
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,381 @@ | ||
| Thumbnail::readAEHistogram and Thumbnail::writeAEHistogram have been | ||
| removed upstream at some point, therefore their patch is missing fixes | ||
| for them. | ||
|
|
||
| This patch is the addition with aim to backport fixes for those | ||
| functions. | ||
|
|
||
| --- a/rtengine/rtthumbnail.cc | ||
| +++ b/rtengine/rtthumbnail.cc | ||
| @@ -2257,7 +2257,7 @@ bool Thumbnail::writeEmbProfile (const Glib::ustring& fname) | ||
| bool Thumbnail::readAEHistogram (const Glib::ustring& fname) | ||
| { | ||
|
|
||
| - FILE* f = g_fopen(fname.c_str(), "rb"); | ||
| + FILE* f = ::g_fopen(fname.c_str(), "rb"); | ||
|
|
||
| if (!f) { | ||
| aeHistogram.reset(); | ||
| @@ -2280,7 +2280,7 @@ bool Thumbnail::writeAEHistogram (const Glib::ustring& fname) | ||
| { | ||
|
|
||
| if (aeHistogram) { | ||
| - FILE* f = g_fopen (fname.c_str (), "wb"); | ||
| + FILE* f = ::g_fopen (fname.c_str (), "wb"); | ||
|
|
||
| if (f) { | ||
| fwrite (&aeHistogram[0], 1, (65536 >> aeHistCompression)*sizeof (aeHistogram[0]), f); | ||
|
|
||
|
|
||
| https://github.com/Beep6581/RawTherapee/commit/2e0137d54243eb729d4a5f939c4320ec8f8f415d | ||
|
|
||
| From 2e0137d54243eb729d4a5f939c4320ec8f8f415d Mon Sep 17 00:00:00 2001 | ||
| From: =?UTF-8?q?Fl=C3=B6ssie?= <floessie.mail@gmail.com> | ||
| Date: Sat, 7 Aug 2021 13:06:02 +0200 | ||
| Subject: [PATCH] Move libc overloads in `myfile.h` to `rtengine::` (fixes | ||
| #6324) | ||
|
|
||
| --- | ||
| rtengine/canon_cr3_decoder.cc | 2 +- | ||
| rtengine/dcraw.cc | 12 ++++++------ | ||
| rtengine/dcraw.h | 20 ++++++++++---------- | ||
| rtengine/dfmanager.cc | 2 +- | ||
| rtengine/myfile.cc | 20 ++++++++++---------- | ||
| rtengine/myfile.h | 4 ++-- | ||
| rtengine/rtthumbnail.cc | 10 +++++----- | ||
| 7 files changed, 35 insertions(+), 35 deletions(-) | ||
|
|
||
| diff --git a/rtengine/canon_cr3_decoder.cc b/rtengine/canon_cr3_decoder.cc | ||
| index ddd4b6172f..1132b4e015 100644 | ||
| --- a/rtengine/canon_cr3_decoder.cc | ||
| +++ b/rtengine/canon_cr3_decoder.cc | ||
| @@ -670,7 +670,7 @@ std::uint32_t _byteswap_ulong(std::uint32_t x) | ||
| #endif | ||
|
|
||
| struct LibRaw_abstract_datastream { | ||
| - IMFILE* ifp; | ||
| + rtengine::IMFILE* ifp; | ||
|
|
||
| void lock() | ||
| { | ||
| diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc | ||
| index ef0b4e8dc2..13a6b054ac 100644 | ||
| --- a/rtengine/dcraw.cc | ||
| +++ b/rtengine/dcraw.cc | ||
| @@ -1963,7 +1963,7 @@ void CLASS phase_one_load_raw_c() | ||
| #endif | ||
| { | ||
| int len[2], pred[2]; | ||
| - IMFILE ifpthr = *ifp; | ||
| + rtengine::IMFILE ifpthr = *ifp; | ||
| ifpthr.plistener = nullptr; | ||
|
|
||
| #ifdef _OPENMP | ||
| @@ -3317,7 +3317,7 @@ void CLASS sony_arw2_load_raw() | ||
| { | ||
| uchar *data = new (std::nothrow) uchar[raw_width + 1]; | ||
| merror(data, "sony_arw2_load_raw()"); | ||
| - IMFILE ifpthr = *ifp; | ||
| + rtengine::IMFILE ifpthr = *ifp; | ||
| int pos = ifpthr.pos; | ||
| ushort pix[16]; | ||
|
|
||
| @@ -6331,7 +6331,7 @@ int CLASS parse_tiff_ifd (int base) | ||
| unsigned sony_curve[] = { 0,0,0,0,0,4095 }; | ||
| unsigned *buf, sony_offset=0, sony_length=0, sony_key=0; | ||
| struct jhead jh; | ||
| -/*RT*/ IMFILE *sfp; | ||
| +/*RT*/ rtengine::IMFILE *sfp; | ||
| /*RT*/ int pana_raw = 0; | ||
|
|
||
| if (tiff_nifds >= sizeof tiff_ifd / sizeof tiff_ifd[0]) | ||
| @@ -6895,7 +6895,7 @@ it under the terms of the one of two licenses as you choose: | ||
| fread (buf, sony_length, 1, ifp); | ||
| sony_decrypt (buf, sony_length/4, 1, sony_key); | ||
| sfp = ifp; | ||
| -/*RT*/ ifp = fopen (buf, sony_length); | ||
| +/*RT*/ ifp = rtengine::fopen (buf, sony_length); | ||
| // if ((ifp = tmpfile())) { | ||
| // fwrite (buf, sony_length, 1, ifp); | ||
| // fseek (ifp, 0, SEEK_SET); | ||
| @@ -7203,7 +7203,7 @@ void CLASS parse_external_jpeg() | ||
| { | ||
| const char *file, *ext; | ||
| char *jname, *jfile, *jext; | ||
| -/*RT*/ IMFILE *save=ifp; | ||
| +/*RT*/ rtengine::IMFILE *save=ifp; | ||
|
|
||
| ext = strrchr (ifname, '.'); | ||
| file = strrchr (ifname, '/'); | ||
| @@ -7231,7 +7231,7 @@ void CLASS parse_external_jpeg() | ||
| *jext = '0'; | ||
| } | ||
| if (strcmp (jname, ifname)) { | ||
| -/*RT*/ if ((ifp = fopen (jname))) { | ||
| +/*RT*/ if ((ifp = rtengine::fopen (jname))) { | ||
| // if ((ifp = fopen (jname, "rb"))) { | ||
| if (verbose) | ||
| fprintf (stderr,_("Reading metadata from %s ...\n"), jname); | ||
| diff --git a/rtengine/dcraw.h b/rtengine/dcraw.h | ||
| index 10c7b9ba68..bc009e67c5 100644 | ||
| --- a/rtengine/dcraw.h | ||
| +++ b/rtengine/dcraw.h | ||
| @@ -73,7 +73,7 @@ class DCraw | ||
|
|
||
| protected: | ||
| int exif_base, ciff_base, ciff_len; | ||
| - IMFILE *ifp; | ||
| + rtengine::IMFILE *ifp; | ||
| FILE *ofp; | ||
| short order; | ||
| const char *ifname; | ||
| @@ -125,7 +125,7 @@ class DCraw | ||
| int cur_buf_size; // buffer size | ||
| uchar *cur_buf; // currently read block | ||
| int fillbytes; // Counter to add extra byte for block size N*16 | ||
| - IMFILE *input; | ||
| + rtengine::IMFILE *input; | ||
| struct int_pair grad_even[3][41]; // tables of gradients | ||
| struct int_pair grad_odd[3][41]; | ||
| ushort *linealloc; | ||
| @@ -278,7 +278,7 @@ void parse_redcine(); | ||
| class getbithuff_t | ||
| { | ||
| public: | ||
| - getbithuff_t(DCraw *p,IMFILE *&i, unsigned &z):parent(p),bitbuf(0),vbits(0),reset(0),ifp(i),zero_after_ff(z){} | ||
| + getbithuff_t(DCraw *p,rtengine::IMFILE *&i, unsigned &z):parent(p),bitbuf(0),vbits(0),reset(0),ifp(i),zero_after_ff(z){} | ||
| unsigned operator()(int nbits, ushort *huff); | ||
|
|
||
| private: | ||
| @@ -288,7 +288,7 @@ class getbithuff_t | ||
| DCraw *parent; | ||
| unsigned bitbuf; | ||
| int vbits, reset; | ||
| - IMFILE *&ifp; | ||
| + rtengine::IMFILE *&ifp; | ||
| unsigned &zero_after_ff; | ||
| }; | ||
| getbithuff_t getbithuff; | ||
| @@ -296,7 +296,7 @@ getbithuff_t getbithuff; | ||
| class nikbithuff_t | ||
| { | ||
| public: | ||
| - explicit nikbithuff_t(IMFILE *&i):bitbuf(0),errors(0),vbits(0),ifp(i){} | ||
| + explicit nikbithuff_t(rtengine::IMFILE *&i):bitbuf(0),errors(0),vbits(0),ifp(i){} | ||
| void operator()() {bitbuf = vbits = 0;}; | ||
| unsigned operator()(int nbits, ushort *huff); | ||
| unsigned errorCount() { return errors; } | ||
| @@ -309,7 +309,7 @@ class nikbithuff_t | ||
| } | ||
| unsigned bitbuf, errors; | ||
| int vbits; | ||
| - IMFILE *&ifp; | ||
| + rtengine::IMFILE *&ifp; | ||
| }; | ||
| nikbithuff_t nikbithuff; | ||
|
|
||
| @@ -377,7 +377,7 @@ void parse_qt (int end); | ||
| // ph1_bithuff(int nbits, ushort *huff); | ||
| class ph1_bithuff_t { | ||
| public: | ||
| - ph1_bithuff_t(DCraw *p, IMFILE *i, short &o):order(o),ifp(i),bitbuf(0),vbits(0){} | ||
| + ph1_bithuff_t(DCraw *p, rtengine::IMFILE *i, short &o):order(o),ifp(i),bitbuf(0),vbits(0){} | ||
| unsigned operator()(int nbits, ushort *huff); | ||
| unsigned operator()(int nbits); | ||
| unsigned operator()(); | ||
| @@ -411,7 +411,7 @@ class ph1_bithuff_t { | ||
| } | ||
|
|
||
| short ℴ | ||
| - IMFILE* const ifp; | ||
| + rtengine::IMFILE* const ifp; | ||
| UINT64 bitbuf; | ||
| int vbits; | ||
| }; | ||
| @@ -429,11 +429,11 @@ void nokia_load_raw(); | ||
|
|
||
| class pana_bits_t{ | ||
| public: | ||
| - pana_bits_t(IMFILE *i, unsigned &u, unsigned enc): | ||
| + pana_bits_t(rtengine::IMFILE *i, unsigned &u, unsigned enc): | ||
| ifp(i), load_flags(u), vbits(0), encoding(enc) {} | ||
| unsigned operator()(int nbits, unsigned *bytes=nullptr); | ||
| private: | ||
| - IMFILE *ifp; | ||
| + rtengine::IMFILE *ifp; | ||
| unsigned &load_flags; | ||
| uchar buf[0x4000]; | ||
| int vbits; | ||
| diff --git a/rtengine/dfmanager.cc b/rtengine/dfmanager.cc | ||
| index 7dde668eb9..e551c9aad9 100644 | ||
| --- a/rtengine/dfmanager.cc | ||
| +++ b/rtengine/dfmanager.cc | ||
| @@ -540,7 +540,7 @@ std::vector<badPix> *DFManager::getHotPixels ( const std::string &mak, const std | ||
|
|
||
| int DFManager::scanBadPixelsFile( Glib::ustring filename ) | ||
| { | ||
| - FILE *file = fopen( filename.c_str(), "r" ); | ||
| + FILE *file = ::fopen( filename.c_str(), "r" ); | ||
|
|
||
| if( !file ) { | ||
| return false; | ||
| diff --git a/rtengine/myfile.cc b/rtengine/myfile.cc | ||
| index 842766dcfc..2321d18bbc 100644 | ||
| --- a/rtengine/myfile.cc | ||
| +++ b/rtengine/myfile.cc | ||
| @@ -70,7 +70,7 @@ int munmap(void *start, size_t length) | ||
|
|
||
| #ifdef MYFILE_MMAP | ||
|
|
||
| -IMFILE* fopen (const char* fname) | ||
| +rtengine::IMFILE* rtengine::fopen (const char* fname) | ||
| { | ||
| int fd; | ||
|
|
||
| @@ -123,13 +123,13 @@ IMFILE* fopen (const char* fname) | ||
| return mf; | ||
| } | ||
|
|
||
| -IMFILE* gfopen (const char* fname) | ||
| +rtengine::IMFILE* rtengine::gfopen (const char* fname) | ||
| { | ||
| return fopen(fname); | ||
| } | ||
| #else | ||
|
|
||
| -IMFILE* fopen (const char* fname) | ||
| +rtengine::IMFILE* rtengine::fopen (const char* fname) | ||
| { | ||
|
|
||
| FILE* f = g_fopen (fname, "rb"); | ||
| @@ -152,7 +152,7 @@ IMFILE* fopen (const char* fname) | ||
| return mf; | ||
| } | ||
|
|
||
| -IMFILE* gfopen (const char* fname) | ||
| +rtengine::IMFILE* rtengine::gfopen (const char* fname) | ||
| { | ||
|
|
||
| FILE* f = g_fopen (fname, "rb"); | ||
| @@ -176,7 +176,7 @@ IMFILE* gfopen (const char* fname) | ||
| } | ||
| #endif //MYFILE_MMAP | ||
|
|
||
| -IMFILE* fopen (unsigned* buf, int size) | ||
| +rtengine::IMFILE* rtengine::fopen (unsigned* buf, int size) | ||
| { | ||
|
|
||
| IMFILE* mf = new IMFILE; | ||
| @@ -190,7 +190,7 @@ IMFILE* fopen (unsigned* buf, int size) | ||
| return mf; | ||
| } | ||
|
|
||
| -void fclose (IMFILE* f) | ||
| +void rtengine::fclose (IMFILE* f) | ||
| { | ||
| #ifdef MYFILE_MMAP | ||
|
|
||
| @@ -207,7 +207,7 @@ void fclose (IMFILE* f) | ||
| delete f; | ||
| } | ||
|
|
||
| -int fscanf (IMFILE* f, const char* s ...) | ||
| +int rtengine::fscanf (IMFILE* f, const char* s ...) | ||
| { | ||
| // fscanf not easily wrapped since we have no terminating \0 at end | ||
| // of file data and vsscanf() won't tell us how many characters that | ||
| @@ -253,7 +253,7 @@ int fscanf (IMFILE* f, const char* s ...) | ||
| } | ||
|
|
||
|
|
||
| -char* fgets (char* s, int n, IMFILE* f) | ||
| +char* rtengine::fgets (char* s, int n, IMFILE* f) | ||
| { | ||
|
|
||
| if (f->pos >= f->size) { | ||
| @@ -270,7 +270,7 @@ char* fgets (char* s, int n, IMFILE* f) | ||
| return s; | ||
| } | ||
|
|
||
| -void imfile_set_plistener(IMFILE *f, rtengine::ProgressListener *plistener, double progress_range) | ||
| +void rtengine::imfile_set_plistener(IMFILE *f, rtengine::ProgressListener *plistener, double progress_range) | ||
| { | ||
| f->plistener = plistener; | ||
| f->progress_range = progress_range; | ||
| @@ -278,7 +278,7 @@ void imfile_set_plistener(IMFILE *f, rtengine::ProgressListener *plistener, doub | ||
| f->progress_current = 0; | ||
| } | ||
|
|
||
| -void imfile_update_progress(IMFILE *f) | ||
| +void rtengine::imfile_update_progress(IMFILE *f) | ||
| { | ||
| if (!f->plistener || f->progress_current < f->progress_next) { | ||
| return; | ||
| diff --git a/rtengine/myfile.h b/rtengine/myfile.h | ||
| index 34b90c525f..ae14ce31ae 100644 | ||
| --- a/rtengine/myfile.h | ||
| +++ b/rtengine/myfile.h | ||
| @@ -30,8 +30,6 @@ namespace rtengine | ||
|
|
||
| class ProgressListener; | ||
|
|
||
| -} | ||
| - | ||
| struct IMFILE { | ||
| int fd; | ||
| ssize_t pos; | ||
| @@ -141,3 +139,5 @@ inline unsigned char* fdata(int offset, IMFILE* f) | ||
|
|
||
| int fscanf (IMFILE* f, const char* s ...); | ||
| char* fgets (char* s, int n, IMFILE* f); | ||
| + | ||
| +} | ||
| diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc | ||
| index 8dc9988620..cf500474f9 100644 | ||
| --- a/rtengine/rtthumbnail.cc | ||
| +++ b/rtengine/rtthumbnail.cc | ||
| @@ -1965,7 +1965,7 @@ bool Thumbnail::writeImage (const Glib::ustring& fname) | ||
|
|
||
| Glib::ustring fullFName = fname + ".rtti"; | ||
|
|
||
| - FILE* f = g_fopen (fullFName.c_str (), "wb"); | ||
| + FILE* f = ::g_fopen (fullFName.c_str (), "wb"); | ||
|
|
||
| if (!f) { | ||
| return false; | ||
| @@ -2008,7 +2008,7 @@ bool Thumbnail::readImage (const Glib::ustring& fname) | ||
| return false; | ||
| } | ||
|
|
||
| - FILE* f = g_fopen(fullFName.c_str (), "rb"); | ||
| + FILE* f = ::g_fopen(fullFName.c_str (), "rb"); | ||
|
|
||
| if (!f) { | ||
| return false; | ||
| @@ -2239,7 +2239,7 @@ bool Thumbnail::writeData (const Glib::ustring& fname) | ||
| return false; | ||
| } | ||
|
|
||
| - FILE *f = g_fopen (fname.c_str (), "wt"); | ||
| + FILE *f = ::g_fopen (fname.c_str (), "wt"); | ||
|
|
||
| if (!f) { | ||
| if (settings->verbose) { | ||
| @@ -2262,7 +2262,7 @@ bool Thumbnail::readEmbProfile (const Glib::ustring& fname) | ||
| embProfile = nullptr; | ||
| embProfileLength = 0; | ||
|
|
||
| - FILE* f = g_fopen (fname.c_str (), "rb"); | ||
| + FILE* f = ::g_fopen (fname.c_str (), "rb"); | ||
|
|
||
| if (f) { | ||
| if (!fseek (f, 0, SEEK_END)) { | ||
| @@ -2290,7 +2290,7 @@ bool Thumbnail::writeEmbProfile (const Glib::ustring& fname) | ||
| { | ||
|
|
||
| if (embProfileData) { | ||
| - FILE* f = g_fopen (fname.c_str (), "wb"); | ||
| + FILE* f = ::g_fopen (fname.c_str (), "wb"); | ||
|
|
||
| if (f) { | ||
| fwrite (embProfileData, 1, embProfileLength, f); | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.