Fix segfault when BUILD_ENGINE_C=ON and FONTS_DIR is provided
authorGianfranco Costamagna <costamagnagianfranco@yahoo.it>
Sat, 29 Nov 2014 14:53:41 +0100
changeset 10778 49a0c25ca176
parent 10776 56e401fb45ea
child 10780 edfe052bebe6
Fix segfault when BUILD_ENGINE_C=ON and FONTS_DIR is provided
hedgewars/CMakeLists.txt
hedgewars/config.inc.in
project_files/hwc/CMakeLists.txt
--- a/hedgewars/CMakeLists.txt	Mon Jan 05 16:29:27 2015 +0100
+++ b/hedgewars/CMakeLists.txt	Sat Nov 29 14:53:41 2014 +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'${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	Sat Nov 29 14:53:41 2014 +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	Sat Nov 29 14:53:41 2014 +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