Merge pull request #29 from LocutusOfBorg/bad-fix-segfault
Fix for segfault when BUILD_ENGINE_C=ON and FONTS_DIR is provided, by Locutus and unC0Rr
--- a/hedgewars/CMakeLists.txt Mon Jan 05 16:29:27 2015 +0100
+++ b/hedgewars/CMakeLists.txt Tue Jan 06 15:16:34 2015 +0100
@@ -21,12 +21,16 @@
endif(UNIX)
# convert list into pascal array
-list(LENGTH FONTS_DIRS ndirs)
-set(FONTS_DIRS_ARRAY "array [0..${ndirs}] of PChar = (")
-foreach(fontdir ${FONTS_DIRS})
- set(FONTS_DIRS_ARRAY "${FONTS_DIRS_ARRAY}\n'${fontdir}',")
-endforeach(fontdir)
-set(FONTS_DIRS_ARRAY "${FONTS_DIRS_ARRAY}\nnil);\n")
+if(FONTS_DIRS)
+ list(LENGTH FONTS_DIRS ndirs)
+ set(FONTS_DIRS_ARRAY "array [0..${ndirs}] of PChar = (")
+ foreach(fontdir ${FONTS_DIRS})
+ set(FONTS_DIRS_ARRAY "${FONTS_DIRS_ARRAY}\n_P'${fontdir}',")
+ endforeach(fontdir)
+ set(FONTS_DIRS_ARRAY "${FONTS_DIRS_ARRAY}\nnil);\n")
+else(FONTS_DIRS)
+ set(FONTS_DIRS_ARRAY "array [0..1] of PChar = (nil, nil);")
+endif(FONTS_DIRS)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.inc.in ${CMAKE_CURRENT_BINARY_DIR}/config.inc)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
--- a/hedgewars/config.inc.in Mon Jan 05 16:29:27 2015 +0100
+++ b/hedgewars/config.inc.in Tue Jan 06 15:16:34 2015 +0100
@@ -26,8 +26,4 @@
cRevisionString = '${HEDGEWARS_REVISION}';
cHashString = '${HEDGEWARS_HASH}';
cDefaultPathPrefix = '${HEDGEWARS_FULL_DATADIR}/Data';
-{$IFDEF PAS2C}
- cFontsPaths: array[0..1] of PChar = (nil, nil);
-{$ELSE}
cFontsPaths: ${FONTS_DIRS_ARRAY}
-{$ENDIF}
--- a/project_files/hwc/CMakeLists.txt Mon Jan 05 16:29:27 2015 +0100
+++ b/project_files/hwc/CMakeLists.txt Tue Jan 06 15:16:34 2015 +0100
@@ -16,6 +16,18 @@
include_directories(${SDL_INCLUDE_DIR})
add_subdirectory(rtl)
+# convert list into pascal array
+if(FONTS_DIRS)
+ list(LENGTH FONTS_DIRS ndirs)
+ set(FONTS_DIRS_ARRAY "array [0..${ndirs}] of PChar = (")
+ foreach(fontdir ${FONTS_DIRS})
+ set(FONTS_DIRS_ARRAY "${FONTS_DIRS_ARRAY}\n_P'${fontdir}',")
+ endforeach(fontdir)
+ set(FONTS_DIRS_ARRAY "${FONTS_DIRS_ARRAY}\nnil);\n")
+else(FONTS_DIRS)
+ set(FONTS_DIRS_ARRAY "array [0..1] of PChar = (nil, nil);")
+endif(FONTS_DIRS)
+
configure_file(${CMAKE_SOURCE_DIR}/hedgewars/config.inc.in ${CMAKE_CURRENT_BINARY_DIR}/config.inc)
#get the list of pas files that are going to be converted and compiled