Fix T50630: Fluid fails on win32 w/ unicode paths

Allow overriding gzip open w/ elbeem.
This commit is contained in:
Campbell Barton 2018-01-30 14:30:28 +11:00
parent 1eeb846e78
commit b0af44fa4d
Notes: blender-bot 2023-02-14 07:14:13 +01:00
Referenced by commit 7e928c3bbc, Fix: msvc build error with bli_fileops.h
Referenced by issue #74155, 2.82 Mantaflow not writing cache files (unicode characters in filepath)
Referenced by issue #53683, 2.79a release
Referenced by issue #50630, fluid cache folder bug (cyrillic in path)
2 changed files with 17 additions and 3 deletions

View File

@ -107,6 +107,14 @@ add_definitions(
-DNEWDIRVELMOTEST=0
)
if(WIN32)
# We need BLI_gzopen on win32 for unicode paths
add_definitions(
-DLBM_GZIP_OVERRIDE_H="${CMAKE_SOURCE_DIR}/source/blender/blenlib/BLI_fileops.h"
-D LBM_GZIP_OPEN_FN="\(gzFile\)BLI_gzopen"
)
endif()
if(WITH_OPENMP)
add_definitions(-DPARALLEL=1)
else()

View File

@ -22,7 +22,11 @@
#include <zlib.h>
#ifdef LBM_GZIP_OVERRIDE_H
# include LBM_GZIP_OVERRIDE_H
#else
# define LBM_GZIP_OPEN_FN(a, b) gzopen(a, b)
#endif
/******************************************************************************
* Constructor
@ -141,7 +145,8 @@ int ntlBlenderDumper::renderScene( void )
std::ostringstream bvelfilename;
bvelfilename << boutfilename.str();
bvelfilename << ".bvel.gz";
gzf = gzopen(bvelfilename.str().c_str(), "wb9");
/* wraps gzopen */
gzf = LBM_GZIP_OPEN_FN(bvelfilename.str().c_str(), "wb9");
if(gzf) {
int numVerts;
if(sizeof(numVerts)!=4) { errMsg("ntlBlenderDumper::renderScene","Invalid int size"); return 1; }
@ -162,7 +167,8 @@ int ntlBlenderDumper::renderScene( void )
// compress all bobj's
boutfilename << ".bobj.gz";
gzf = gzopen(boutfilename.str().c_str(), "wb1"); // wb9 is slow for large meshes!
/* wraps gzopen */
gzf = LBM_GZIP_OPEN_FN(boutfilename.str().c_str(), "wb1"); // wb9 is slow for large meshes!
if (!gzf) {
errMsg("ntlBlenderDumper::renderScene","Unable to open output '" + boutfilename.str() + "' ");
return 1; }