openexr
openexr copied to clipboard
Regression: Build fails with custom namespaces
To avoid clashes with other apps, we build with -DOPENEXR_IMF_NAMESPACE=FL_Imf -DILMTHREAD_NAMESPACE=FL_IlmThread -DIEX_NAMESPACE=FL_Iex
Recent changes (between 3.1.5 and 3.2.0) have broken the build in this situation. This patch fixes them up:
diff -Naur openexr-3.2.0/src/wrappers/python/OpenEXR.cpp openexr-3.2.0-fl/src/wrappers/python/OpenEXR.cpp
--- openexr-3.2.0/src/wrappers/python/OpenEXR.cpp 2023-08-28 18:56:26.000000000 +0100
+++ openexr-3.2.0-fl/src/wrappers/python/OpenEXR.cpp 2023-09-19 10:06:34.100461770 +0100
@@ -92,8 +92,8 @@
#endif
using namespace std;
-using namespace Imf;
-using namespace Imath;
+using namespace IMF;
+using namespace IMATH_NAMESPACE;
static PyObject *OpenEXR_error = NULL;
static PyObject *pModuleImath;
@@ -155,7 +155,7 @@
memcpy(c, PyString_AsString(data), PyString_Size(data));
Py_DECREF(data);
} else {
- throw Iex::InputExc("file read failed");
+ throw IEX_NAMESPACE::InputExc("file read failed");
}
return 0;
}
@@ -177,7 +177,7 @@
Py_DECREF(rv);
return (Int64)t;
} else {
- throw Iex::InputExc("tell failed");
+ throw IEX_NAMESPACE::InputExc("tell failed");
}
}
@@ -188,7 +188,7 @@
if (data != NULL) {
Py_DECREF(data);
} else {
- throw Iex::InputExc("seek failed");
+ throw IEX_NAMESPACE::InputExc("seek failed");
}
}
@@ -220,7 +220,7 @@
if (data != NULL) {
Py_DECREF(data);
} else {
- throw Iex::InputExc("file write failed");
+ throw IEX_NAMESPACE::InputExc("file write failed");
}
}
@@ -241,7 +241,7 @@
Py_DECREF(rv);
return (Int64)t;
} else {
- throw Iex::InputExc("tell failed");
+ throw IEX_NAMESPACE::InputExc("tell failed");
}
}
@@ -252,7 +252,7 @@
if (data != NULL) {
Py_DECREF(data);
} else {
- throw Iex::InputExc("seek failed");
+ throw IEX_NAMESPACE::InputExc("seek failed");
}
}
diff -Naur openexr-3.2.0/website/src/all.cpp openexr-3.2.0-fl/website/src/all.cpp
--- openexr-3.2.0/website/src/all.cpp 2023-08-28 18:56:26.000000000 +0100
+++ openexr-3.2.0-fl/website/src/all.cpp 2023-09-19 10:13:45.424049266 +0100
@@ -35,8 +35,8 @@
#include <unistd.h>
#endif
-using namespace Imath;
-using namespace Imf;
+using namespace IMATH_NAMESPACE;
+using namespace OPENEXR_IMF_NAMESPACE;
using std::max;
diff -Naur openexr-3.2.0/website/src/C_IStream_read.cpp openexr-3.2.0-fl/website/src/C_IStream_read.cpp
--- openexr-3.2.0/website/src/C_IStream_read.cpp 2023-08-28 18:56:26.000000000 +0100
+++ openexr-3.2.0-fl/website/src/C_IStream_read.cpp 2023-09-19 10:06:59.782734926 +0100
@@ -8,9 +8,9 @@
// determine what happened.
if (ferror (_file))
- Iex::throwErrnoExc();
+ IEX_NAMESPACE::throwErrnoExc();
else
- throw Iex::InputExc ("Unexpected end of file.");
+ throw IEX_NAMESPACE::InputExc ("Unexpected end of file.");
}
return !feof (_file);
diff -Naur openexr-3.2.0/website/src/MemoryMappedIStream_read.cpp openexr-3.2.0-fl/website/src/MemoryMappedIStream_read.cpp
--- openexr-3.2.0/website/src/MemoryMappedIStream_read.cpp 2023-08-28 18:56:26.000000000 +0100
+++ openexr-3.2.0-fl/website/src/MemoryMappedIStream_read.cpp 2023-09-19 10:07:07.901821279 +0100
@@ -2,10 +2,10 @@
MemoryMappedIStream::read (char c[], int n)
{
if (_readPosition >= _fileLength)
- throw Iex::InputExc ("Unexpected end of file.");
+ throw IEX_NAMESPACE::InputExc ("Unexpected end of file.");
if (_readPosition + n > _fileLength)
- throw Iex::InputExc ("Reading past end of file.");
+ throw IEX_NAMESPACE::InputExc ("Reading past end of file.");
memcpy (c, _buffer + _readPosition, n);
diff -Naur openexr-3.2.0/website/src/MemoryMappedIStream_readMemoryMapped.cpp openexr-3.2.0-fl/website/src/MemoryMappedIStream_readMemoryMapped.cpp
--- openexr-3.2.0/website/src/MemoryMappedIStream_readMemoryMapped.cpp 2023-08-28 18:56:26.000000000 +0100
+++ openexr-3.2.0-fl/website/src/MemoryMappedIStream_readMemoryMapped.cpp 2023-09-19 10:06:46.743596241 +0100
@@ -2,10 +2,10 @@
MemoryMappedIStream::readMemoryMapped (int n)
{
if (_readPosition >= _fileLength)
- throw Iex::InputExc ("Unexpected end of file.");
+ throw IEX_NAMESPACE::InputExc ("Unexpected end of file.");
if (_readPosition + n > _fileLength)
- throw Iex::InputExc ("Reading past end of file.");
+ throw IEX_NAMESPACE::InputExc ("Reading past end of file.");
char *data = _buffer + _readPosition;
Suggest CI builds are amended to include this as a normal test case so this doesn't keep happening.