Merge pull request #29 from LocutusOfBorg/bad-fix-segfault
authorsheepluva <sheepluva@users.noreply.github.com>
Tue, 06 Jan 2015 15:16:34 +0100
changeset 10781 d48a14222956
parent 10776 56e401fb45ea (current diff)
parent 10780 edfe052bebe6 (diff)
child 10782 6feaf9a863dd
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