Skip to content

Commit 089b553

Browse files
committed
Closes #1727
1 parent 2321f1f commit 089b553

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

src/CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,12 @@ IF(RENDERER_TRACE_ON)
340340
ADD_DEFINITIONS(-DRENDERER_TRACE_ON)
341341
ENDIF()
342342

343+
########################################################################
344+
# Matlab i/o option--see issue #1727 and #1692
345+
346+
OPTION(MATLAB_STRING_OUTPUT_SIGNED_TYPE_FIX_FOR_SCIPY "Toggle quasi-fix for Issue #1692." OFF)
347+
MARK_AS_ADVANCED(MATLAB_STRING_OUTPUT_SIGNED_TYPE_FIX_FOR_SCIPY)
348+
343349
########################################################################
344350
# Copy Spire-SCIRun specific assets and shaders
345351

src/Core/Matlab/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ TARGET_LINK_LIBRARIES(Core_Matlab
6868
${SCI_TEEM_LIBRARY}
6969
)
7070

71+
IF(MATLAB_STRING_OUTPUT_SIGNED_TYPE_FIX_FOR_SCIPY)
72+
ADD_DEFINITIONS(-DMATLAB_STRING_OUTPUT_SIGNED_TYPE_FIX_FOR_SCIPY)
73+
ENDIF()
74+
7175
IF(BUILD_SHARED_LIBS)
7276
ADD_DEFINITIONS(-DBUILD_Core_Matlab)
7377
ENDIF(BUILD_SHARED_LIBS)

src/Core/Matlab/matfiledata.cc

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,12 @@
5959

6060
using namespace SCIRun::MatlabIO;
6161

62+
#ifdef MATLAB_STRING_OUTPUT_SIGNED_TYPE_FIX_FOR_SCIPY
63+
#define MATLAB_STRING_OUTPUT_DATATYPE miINT8
64+
#else
65+
#define MATLAB_STRING_OUTPUT_DATATYPE miUINT8
66+
#endif
67+
6268
matfiledata::matfiledata()
6369
: m_(nullptr), ptr_(nullptr)
6470
{
@@ -273,13 +279,13 @@ void matfiledata::putstring(const std::string& str)
273279
clear();
274280
if (dsize > 0)
275281
{
276-
newdatabuffer(dsize,miUINT8);
282+
newdatabuffer(dsize, MATLAB_STRING_OUTPUT_DATATYPE);
277283
ptr = static_cast<char *>(databuffer());
278284
for (int p=0;p<dsize;p++) { ptr[p] = str[p];}
279285
}
280286
else
281287
{
282-
m_->type_ = miUINT8;
288+
m_->type_ = MATLAB_STRING_OUTPUT_DATATYPE;
283289
}
284290
}
285291

0 commit comments

Comments
 (0)