From 8bdfa5aa1b689c034073aff77ddf18266430327b Mon Sep 17 00:00:00 2001 From: Marqt Date: Fri, 25 Mar 2016 14:48:42 +0100 Subject: [PATCH] Windows fixes Former-commit-id: b9c699abfac8f799d8ac41d6c1883869256e05b4 --- CMakeLists.txt | 62 +++++++++++++------ vizdoom_api_bindings/java/DoomGame.java | 49 ++++++++------- vizdoom_api_bindings/java/ViZDoomGameJava.cpp | 4 +- vizdoom_api_src/ViZDoomDefines.h | 4 +- vizdoom_src/src/d_main.cpp | 2 +- vizdoom_src/src/vizdoom_game.cpp | 2 + vizdoom_src/src/vizdoom_input.cpp | 43 +++++++++---- vizdoom_src/src/vizdoom_input.h | 2 + vizdoom_src/src/vizdoom_message_queue.cpp | 11 +++- vizdoom_src/src/vizdoom_shared_memory.cpp | 6 +- vizdoom_src/tools/re2c/substr.cc | 4 +- 11 files changed, 124 insertions(+), 65 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 13f6285a8..9d21625a2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,6 +56,7 @@ if( MSVC ) endif() +set( VIZDOOM_OUTPUT_DIR ${CMAKE_BINARY_DIR}/bin ) # Targets add_subdirectory( vizdoom_src ) @@ -65,7 +66,7 @@ find_package(Threads REQUIRED) set( VIZDOOM_INCLUDE_DIR vizdoom_api_src ) -include_directories( ${VIZDOOM_IrmNCLUDE_DIR} ${Boost_INCLUDE_DIR} ) +include_directories( ${VIZDOOM_INCLUDE_DIR} ${Boost_INCLUDE_DIR} ) set( VIZDOOM_LIBS ${Boost_LIBRARIES} @@ -90,11 +91,18 @@ target_link_libraries (vizdoomshared ${VIZDOOM_LIBS}) set_target_properties( vizdoomstatic vizdoomshared PROPERTIES - ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin - LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin - RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin + ARCHIVE_OUTPUT_DIRECTORY ${VIZDOOM_OUTPUT_DIR} + ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${VIZDOOM_OUTPUT_DIR} + ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${VIZDOOM_OUTPUT_DIR} + LIBRARY_OUTPUT_DIRECTORY ${VIZDOOM_OUTPUT_DIR} + LIBRARY_OUTPUT_DIRECTORY_DEBUG ${VIZDOOM_OUTPUT_DIR} + LIBRARY_OUTPUT_DIRECTORY_RELEASE ${VIZDOOM_OUTPUT_DIR} + RUNTIME_OUTPUT_DIRECTORY ${VIZDOOM_OUTPUT_DIR} + RUNTIME_OUTPUT_DIRECTORY_DEBUG ${VIZDOOM_OUTPUT_DIR} + RUNTIME_OUTPUT_DIRECTORY_RELEASE ${VIZDOOM_OUTPUT_DIR} OUTPUT_NAME vizdoom ) +#Python binding if(BUILD_PYTHON) #set(Boost_USE_DEBUG_PYTHON OFF) @@ -108,7 +116,7 @@ if(BUILD_PYTHON) set( VIZDOOM_PYTHON_LIBS ${VIZDOOM_LIBS} - ${Boost_PYTHON_LIBRARY} + ${Boost_PYTHON_LIBRARY} ${PYTHON_LIBRARIES} ${NUMPY_LIBRARIES} ) @@ -130,15 +138,21 @@ if(BUILD_PYTHON) set_target_properties( vizdoompython PROPERTIES - ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin/python - LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin/python - RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin/python + ARCHIVE_OUTPUT_DIRECTORY ${VIZDOOM_OUTPUT_DIR}/python + ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${VIZDOOM_OUTPUT_DIR}/python + ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${VIZDOOM_OUTPUT_DIR}/python + LIBRARY_OUTPUT_DIRECTORY ${VIZDOOM_OUTPUT_DIR}/python + LIBRARY_OUTPUT_DIRECTORY_DEBUG ${VIZDOOM_OUTPUT_DIR}/python + LIBRARY_OUTPUT_DIRECTORY_RELEASE ${VIZDOOM_OUTPUT_DIR}/python + RUNTIME_OUTPUT_DIRECTORY ${VIZDOOM_OUTPUT_DIR}/python + RUNTIME_OUTPUT_DIRECTORY_DEBUG ${VIZDOOM_OUTPUT_DIR}/python + RUNTIME_OUTPUT_DIRECTORY_RELEASE ${VIZDOOM_OUTPUT_DIR}/python OUTPUT_NAME vizdoom ) if(UNIX) ADD_CUSTOM_COMMAND( TARGET vizdoompython - COMMAND ln -sf ${PROJECT_SOURCE_DIR}/bin/python/vizdoom.so ${PROJECT_SOURCE_DIR}/examples/python/vizdoom.so + COMMAND ln -sf ${VIZDOOM_OUTPUT_DIR}/python/vizdoom.so ${PROJECT_SOURCE_DIR}/examples/python/vizdoom.so COMMAND ln -sf ${PROJECT_SOURCE_DIR}/examples/config/bots.cfg ${PROJECT_SOURCE_DIR}/examples/python/bots.cfg COMMENT "Adding symlinks to vizdoom.so and bots.cfg in examples/python." ) @@ -147,6 +161,7 @@ if(BUILD_PYTHON) endif() +#Java binding if(BUILD_JAVA) if (NOT DEFINED ENV{JAVA_HOME}) @@ -160,8 +175,7 @@ if(BUILD_JAVA) set( VIZDOOM_JAVA_INCLUDE_DIR ${VIZDOOM_INCLUDE_DIR} vizdoom_api_bindings/java ) set( VIZDOOM_JAVA_LIBS - ${VIZDOOM_LIBS} - ${Boost_LIBRARIES} + ${VIZDOOM_LIBS} ${Java_LIBRARIES} ${JNI_LIBRARIES} ) @@ -206,23 +220,31 @@ if(BUILD_JAVA) ./vizdoom_api_bindings/java/errors/SharedMemoryException.java ./vizdoom_api_bindings/java/GameState.java ./vizdoom_api_bindings/java/DoomGame.java - OUTPUT_DIR ${PROJECT_SOURCE_DIR}/bin/java OUTPUT_NAME vizdoom) + OUTPUT_DIR ${VIZDOOM_OUTPUT_DIR}/java + OUTPUT_NAME vizdoom) set_target_properties( vizdoomjava PROPERTIES - ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin/java - LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin/java - RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin/java + ARCHIVE_OUTPUT_DIRECTORY ${VIZDOOM_OUTPUT_DIR}/java + ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${VIZDOOM_OUTPUT_DIR}/java + ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${VIZDOOM_OUTPUT_DIR}/java + LIBRARY_OUTPUT_DIRECTORY ${VIZDOOM_OUTPUT_DIR}/java + LIBRARY_OUTPUT_DIRECTORY_DEBUG ${VIZDOOM_OUTPUT_DIR}/java + LIBRARY_OUTPUT_DIRECTORY_RELEASE ${VIZDOOM_OUTPUT_DIR}/java + RUNTIME_OUTPUT_DIRECTORY ${VIZDOOM_OUTPUT_DIR}/java + RUNTIME_OUTPUT_DIRECTORY_DEBUG ${VIZDOOM_OUTPUT_DIR}/java + RUNTIME_OUTPUT_DIRECTORY_RELEASE ${VIZDOOM_OUTPUT_DIR}/java OUTPUT_NAME vizdoom ) endif() - -#message("-- Downloading Freedoom WADs") -#message("-- Original Doom WADs can not be provided due to licences") - if( WIN32 ) - file( DOWNLOAD https://github.com/freedoom/freedoom/releases/download/v0.10.1/freedoom-0.10.1.zip ./scenarios/freedoom-0.10.1.zip SHOW_PROGRESS ) + if(NOT EXISTS "${PROJECT_SOURCE_DIR}/scenarios/freedoom.zip") + message("-- Downloading Freedoom WADs") + message("-- Original Doom WADs can not be provided due to licences") + + file( DOWNLOAD https://github.com/freedoom/freedoom/releases/download/v0.10.1/freedoom-0.10.1.zip ${PROJECT_SOURCE_DIR}/scenarios/freedoom.zip SHOW_PROGRESS ) + endif() endif() if(UNIX) diff --git a/vizdoom_api_bindings/java/DoomGame.java b/vizdoom_api_bindings/java/DoomGame.java index 7073afe3a..c333dc699 100644 --- a/vizdoom_api_bindings/java/DoomGame.java +++ b/vizdoom_api_bindings/java/DoomGame.java @@ -5,7 +5,7 @@ public class DoomGame{ static { - System.loadLibrary("vizdoom"); + System.loadLibrary("vizdoom"); } public long internalPtr = 0; @@ -29,11 +29,11 @@ public DoomGame(){ public native boolean isRunning(); public native void setAction(int[] actions); - public native void advanceAction(); - public native void advanceAction(int tics); - public native void advanceAction(int tics, boolean stateUpdate, boolean renderOnly); - public native double makeAction(int[] actions); - public native double makeAction(int[] actions, int tics); + public native void advanceAction(); + public native void advanceAction(int tics); + public native void advanceAction(int tics, boolean stateUpdate, boolean renderOnly); + public native double makeAction(int[] actions); + public native double makeAction(int[] actions, int tics); public native GameState getState(); @@ -44,7 +44,7 @@ public DoomGame(){ public native boolean isEpisodeFinished(); public native boolean isPlayerDead(); - public native void respawnPlayer(); + public native void respawnPlayer(); public native void addAvailableButton(Button button); public native void addAvailableButton(Button button, int maxValue); @@ -56,16 +56,17 @@ public DoomGame(){ public native void addAvailableGameVariable(GameVariable var); public native void clearAvailableGameVariables(); - public native int getAvailableGameVariablesSize(); + public native int getAvailableGameVariablesSize(); public native void addGameArgs(String arg); - public native void clearGameArgs(); + public native void clearGameArgs(); - public native void sendGameCommand(String cmd); + public native void sendGameCommand(String cmd); public native int[] getGameScreen(); - private native int getMod(); + private native int getMod(); + public Mode getMode(){ Mode ret=Mode.values()[getMod()]; return ret; @@ -78,13 +79,13 @@ public Mode getMode(){ public native int getGameVariable(GameVariable var); - public native double getLivingReward(); - public native void setLivingReward(double livingReward); - public native double getDeathPenalty(); - public native void setDeathPenalty(double deathPenalty); + public native double getLivingReward(); + public native void setLivingReward(double livingReward); + public native double getDeathPenalty(); + public native void setDeathPenalty(double deathPenalty); - public native double getLastReward(); - public native double getSummaryReward(); + public native double getLastReward(); + public native double getSummaryReward(); public native void setViZDoomPath(String path); public native void setDoomGamePath(String path); @@ -93,18 +94,18 @@ public Mode getMode(){ public native void setDoomSkill(int skill); public native void setDoomConfigPath(String path); - public native int getSeed(); - public native void setSeed(int seed); + public native int getSeed(); + public native void setSeed(int seed); - public native int getEpisodeStartTime(); - public native void setEpisodeStartTime(int tics); + public native int getEpisodeStartTime(); + public native void setEpisodeStartTime(int tics); - public native int getEpisodeTimeout(); - public native void setEpisodeTimeout(int tics); + public native int getEpisodeTimeout(); + public native void setEpisodeTimeout(int tics); public native int getEpisodeTime(); - public native void setScreenResolution(ScreenResolution resolution); + public native void setScreenResolution(ScreenResolution resolution); public native void setScreenFormat(ScreenFormat format); public native void setRenderHud(boolean hud); public native void setRenderWeapon(boolean weapon); diff --git a/vizdoom_api_bindings/java/ViZDoomGameJava.cpp b/vizdoom_api_bindings/java/ViZDoomGameJava.cpp index 77e06afce..7bd084fcf 100644 --- a/vizdoom_api_bindings/java/ViZDoomGameJava.cpp +++ b/vizdoom_api_bindings/java/ViZDoomGameJava.cpp @@ -494,7 +494,7 @@ JNIEXPORT jobject JNICALL Java_DoomGame_getState } env->ReleaseIntArrayElements(jbuffer, oarr, NULL); - uint8_t *pointer; + boost::uint8_t *pointer; pointer=statec.imageBuffer; jintArray jbuffer2 = env->NewIntArray(rozmiar); oarr = env->GetIntArrayElements(jbuffer2, NULL); @@ -876,7 +876,7 @@ JNIEXPORT jintArray JNICALL Java_DoomGame_getGameScreen int rozmiar=game->getScreenSize(); std::vector ourvector; - uint8_t *pointer; + boost::uint8_t *pointer; pointer=game->getGameScreen(); jintArray jbuffer = env->NewIntArray(rozmiar); jint *oarr; diff --git a/vizdoom_api_src/ViZDoomDefines.h b/vizdoom_api_src/ViZDoomDefines.h index f9edf2def..65b56c88b 100644 --- a/vizdoom_api_src/ViZDoomDefines.h +++ b/vizdoom_api_src/ViZDoomDefines.h @@ -1,7 +1,7 @@ #ifndef __VIZDOOM_DEFINES_H__ #define __VIZDOOM_DEFINES_H__ -#include +#include #include namespace vizdoom{ @@ -9,7 +9,7 @@ namespace vizdoom{ #define VIZDOOM_API_VERSION_STR "1.0.0" #define VIZDOOM_API_VERSION_INT 100 - typedef unsigned char uint8_t; + typedef boost::uint8_t uint8_t; struct GameState { unsigned int number; diff --git a/vizdoom_src/src/d_main.cpp b/vizdoom_src/src/d_main.cpp index d353ed532..3280a001b 100644 --- a/vizdoom_src/src/d_main.cpp +++ b/vizdoom_src/src/d_main.cpp @@ -1025,7 +1025,7 @@ void D_DoomLoop () vizdoom_time = I_GetTime (true); I_WaitForTic(vizdoom_time); //I_WaitForTic(gametic + 1); - D_ProcessEvents (); + //D_ProcessEvents (); } G_BuildTiccmd (&netcmds[consoleplayer][maketic%BACKUPTICS]); diff --git a/vizdoom_src/src/vizdoom_game.cpp b/vizdoom_src/src/vizdoom_game.cpp index 7338fa4ff..5ec71851f 100644 --- a/vizdoom_src/src/vizdoom_game.cpp +++ b/vizdoom_src/src/vizdoom_game.cpp @@ -110,6 +110,7 @@ void ViZDoom_GameVarsInit(){ } void ViZDoom_GameVarsTic(){ + vizdoomGameVars->GAME_TIC = gametic; vizdoomGameVars->GAME_STATE = gamestate; vizdoomGameVars->GAME_ACTION = gameaction; @@ -176,6 +177,7 @@ void ViZDoom_GameVarsTic(){ vizdoomGameVars->PLAYER_AMMO[i] = ViZDoom_CheckSlotAmmo(i); vizdoomGameVars->PLAYER_WEAPON[i] = ViZDoom_CheckSlotWeapons(i); } + } void ViZDoom_GameVarsClose(){ diff --git a/vizdoom_src/src/vizdoom_input.cpp b/vizdoom_src/src/vizdoom_input.cpp index ab96edf13..c2335cd93 100644 --- a/vizdoom_src/src/vizdoom_input.cpp +++ b/vizdoom_src/src/vizdoom_input.cpp @@ -24,7 +24,7 @@ int vizdoomLastInputUpdate[VIZDOOM_BT_SIZE]; EXTERN_CVAR (Bool, vizdoom_allow_input); void ViZDoom_Command(char * cmd){ - //printf("VIZIA CMD %d %s\n", gametic, cmd); + //Printf("VIZIA CMD %d %s\n", gametic, cmd); if(strlen(cmd) >= 1) AddCommandString(cmd); } @@ -49,7 +49,10 @@ bool ViZDoom_CommmandFilter(const char *cmd){ else beg = cmd; for(int i = 0; iBT_AVAILABLE[i]) { vizdoomInput->BT[i] = 0; return false; @@ -59,6 +62,8 @@ bool ViZDoom_CommmandFilter(const char *cmd){ vizdoomLastInputUpdate[i] = VIZDOOM_TIME; } } + + delete[] ckeckCmd; } //printf("%d %s\n",gametic, cmd); @@ -114,8 +119,9 @@ void ViZDoom_AddAxisBT(int button, int value){ } char* ViZDoom_BTToCommand(int button){ + switch(button){ - case VIZDOOM_BT_ATTACK : return strdup("attack"); + case VIZDOOM_BT_ATTACK: return strdup("attack"); case VIZDOOM_BT_USE : return strdup("use"); case VIZDOOM_BT_JUMP : return strdup("jump"); case VIZDOOM_BT_CROUCH : return strdup("crouch"); @@ -127,8 +133,8 @@ char* ViZDoom_BTToCommand(int button){ case VIZDOOM_BT_SPEED : return strdup("speed"); case VIZDOOM_BT_STRAFE : return strdup("strafe"); - case VIZDOOM_BT_MOVE_RIGHT : return strdup("moveright"); - case VIZDOOM_BT_MOVE_LEFT : return strdup("moveleft"); + case VIZDOOM_BT_MOVE_RIGHT: return strdup("moveright"); + case VIZDOOM_BT_MOVE_LEFT: return strdup("moveleft"); case VIZDOOM_BT_MOVE_BACK : return strdup("back"); case VIZDOOM_BT_MOVE_FORWARD : return strdup("forward"); case VIZDOOM_BT_TURN_RIGHT : return strdup("right"); @@ -176,8 +182,21 @@ void ViZDoom_ResetDiscontinuousBT(){ } } +char* ViZDoom_AddStateToBTCommmand(char *& cmd, int state){ + char *stateCmd = new char[strlen(cmd)+1]; + if (state) stateCmd[0] = '+'; + else stateCmd[0] = '-'; + strcpy(stateCmd + 1, cmd); + delete[] cmd; + + cmd = stateCmd; + return stateCmd; +} + void ViZDoom_AddBTCommand(int button, int state){ + char* buttonCmd = ViZDoom_BTToCommand(button); + switch(button){ case VIZDOOM_BT_ATTACK : case VIZDOOM_BT_USE : @@ -197,9 +216,9 @@ void ViZDoom_AddBTCommand(int button, int state){ case VIZDOOM_BT_LOOK_UP : case VIZDOOM_BT_LOOK_DOWN : case VIZDOOM_BT_MOVE_UP : - case VIZDOOM_BT_MOVE_DOWN : - if(state) ViZDoom_Command(strcat(strdup("+"), ViZDoom_BTToCommand(button))); - else ViZDoom_Command(strcat(strdup("-"), ViZDoom_BTToCommand(button))); + case VIZDOOM_BT_MOVE_DOWN: + ViZDoom_AddStateToBTCommmand(buttonCmd, state); + ViZDoom_Command(buttonCmd); break; case VIZDOOM_BT_TURN180 : @@ -221,7 +240,7 @@ void ViZDoom_AddBTCommand(int button, int state){ case VIZDOOM_BT_SELECT_NEXT_ITEM : case VIZDOOM_BT_SELECT_PREV_ITEM : case VIZDOOM_BT_DROP_SELECTED_ITEM : - if(state) ViZDoom_Command(ViZDoom_BTToCommand(button)); + if (state) ViZDoom_Command(buttonCmd); break; case VIZDOOM_BT_VIEW_PITCH : @@ -232,6 +251,8 @@ void ViZDoom_AddBTCommand(int button, int state){ if(state != 0) ViZDoom_AddAxisBT(button, state); break; } + + delete[] buttonCmd; } void ViZDoom_InputInit() { @@ -295,6 +316,6 @@ void ViZDoom_InputTic(){ } void ViZDoom_InputClose(){ - //delete(vizdoomLastInput); - delete(vizdoomInputSMRegion); + //delete vizdoomLastInput ; + delete vizdoomInputSMRegion ; } \ No newline at end of file diff --git a/vizdoom_src/src/vizdoom_input.h b/vizdoom_src/src/vizdoom_input.h index 79cbeb33b..a4c34125e 100644 --- a/vizdoom_src/src/vizdoom_input.h +++ b/vizdoom_src/src/vizdoom_input.h @@ -9,6 +9,8 @@ int ViZDoom_AxisFilter(int button, int value); void ViZDoom_AddAxisBT(int button, int value); +char* ViZDoom_AddStateToBTCommmand(char *& cmd, int state); + char* ViZDoom_BTToCommand(int button); void ViZDoom_ResetDiscontinuousBT(); diff --git a/vizdoom_src/src/vizdoom_message_queue.cpp b/vizdoom_src/src/vizdoom_message_queue.cpp index 7abc1d78e..7df1d19b8 100644 --- a/vizdoom_src/src/vizdoom_message_queue.cpp +++ b/vizdoom_src/src/vizdoom_message_queue.cpp @@ -18,8 +18,13 @@ char * vizdoomMQDoomName; void ViZDoom_MQInit(const char * id){ - vizdoomMQControllerName = strcat(strdup(VIZDOOM_MQ_NAME_CTR_BASE), id); - vizdoomMQDoomName = strcat(strdup(VIZDOOM_MQ_NAME_DOOM_BASE), id); + vizdoomMQControllerName = new char[strlen(VIZDOOM_MQ_NAME_CTR_BASE) + strlen(id)]; + strcpy(vizdoomMQControllerName, VIZDOOM_MQ_NAME_CTR_BASE); + strcat(vizdoomMQControllerName, id); + + vizdoomMQDoomName = new char[strlen(VIZDOOM_MQ_NAME_DOOM_BASE) + strlen(id)]; + strcpy(vizdoomMQDoomName, VIZDOOM_MQ_NAME_DOOM_BASE); + strcat(vizdoomMQDoomName, id); try{ vizdoomMQController = new bip::message_queue(bip::open_only, vizdoomMQControllerName);//, VIZDOOM_MQ_MAX_MSG_NUM, VIZDOOM_MQ_MAX_MSG_SIZE); @@ -98,4 +103,6 @@ void ViZDoom_MQTic(){ void ViZDoom_MQClose(){ //bip::message_queue::remove(vizdoomMQControllerName); //bip::message_queue::remove(vizdoomMQDoomName); + delete[] vizdoomMQControllerName; + delete[] vizdoomMQDoomName; } \ No newline at end of file diff --git a/vizdoom_src/src/vizdoom_shared_memory.cpp b/vizdoom_src/src/vizdoom_shared_memory.cpp index 6df20941a..e668acb71 100644 --- a/vizdoom_src/src/vizdoom_shared_memory.cpp +++ b/vizdoom_src/src/vizdoom_shared_memory.cpp @@ -12,7 +12,9 @@ char * vizdoomSMName; void ViZDoom_SMInit(const char * id){ - vizdoomSMName = strcat(strdup(VIZDOOM_SM_NAME_BASE), id); + vizdoomSMName = new char[strlen(VIZDOOM_SM_NAME_BASE) + strlen(id)]; + strcpy(vizdoomSMName, VIZDOOM_SM_NAME_BASE); + strcat(vizdoomSMName, id); try { bip::shared_memory_object::remove(vizdoomSMName); @@ -31,5 +33,5 @@ void ViZDoom_SMInit(const char * id){ void ViZDoom_SMClose(){ bip::shared_memory_object::remove(vizdoomSMName); - delete[](vizdoomSMName); + delete[]vizdoomSMName; } \ No newline at end of file diff --git a/vizdoom_src/tools/re2c/substr.cc b/vizdoom_src/tools/re2c/substr.cc index 7796c1dc0..03f0bfe1d 100644 --- a/vizdoom_src/tools/re2c/substr.cc +++ b/vizdoom_src/tools/re2c/substr.cc @@ -31,7 +31,9 @@ bool operator==(const SubStr &s1, const SubStr &s2) } Str::Str(const SubStr& s) - : SubStr(strndup(s.str, s.len), s.len) + //VIZDOOM_CODE + //: SubStr(strndup(s.str, s.len), s.len) + : SubStr(strdup(s.str), s.len) { ; }