[packages/mapserver] - updated to 7.6.1
bszx
bszx at pld-linux.org
Thu Jan 14 11:35:15 CET 2021
commit f21219c277bf433bd7a84e75bddb7346685f8636
Author: Bartek Szady <bszx at bszx.eu>
Date: Thu Jan 14 11:32:39 2021 +0100
- updated to 7.6.1
mapserver-branch.patch | 1292 ------------------------------------------------
mapserver.spec | 11 +-
2 files changed, 4 insertions(+), 1299 deletions(-)
---
diff --git a/mapserver.spec b/mapserver.spec
index d1bdf6c..fb95f33 100644
--- a/mapserver.spec
+++ b/mapserver.spec
@@ -14,14 +14,12 @@
Summary: Web-enabled mapping application development
Summary(pl.UTF-8): Generowanie map poprzez WWW
Name: mapserver
-Version: 7.0.0
-Release: 0.6
+Version: 7.6.1
+Release: 0.1
License: BSD-like
Group: Applications
Source0: http://download.osgeo.org/mapserver/%{name}-%{version}.tar.gz
-# Source0-md5: e39360006e668ae2ba3560ed37a43e9b
-#git diff rel-7-0-0..>mapserver-branch.patch
-Patch0: %{name}-branch.patch
+# Source0-md5: 204ae6e90e25601656756b2e24a73f72
Patch1: %{name}-fastcgi-cmake.patch
Patch2: %{name}-fribidi-cmake.patch
URL: http://mapserver.org/
@@ -129,7 +127,6 @@ Moduł Tcl MapScript.
%prep
%setup -q
-%patch0 -p1
%patch1 -p1
%patch2 -p1
@@ -177,7 +174,7 @@ fi
%files
%defattr(644,root,root,755)
-%doc README HISTORY.TXT
+%doc README.rst HISTORY.TXT
%attr(755,root,root) %{_bindir}/*
%attr(755,root,root) %{_libdir}/libmapserver.so.*.*.*
%ghost %{_libdir}/libmapserver.so.2
diff --git a/mapserver-branch.patch b/mapserver-branch.patch
deleted file mode 100644
index 1c9ff27..0000000
--- a/mapserver-branch.patch
+++ /dev/null
@@ -1,1292 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index ff893a84..1745823 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -37,6 +37,24 @@ if (APPLE)
- set(CMAKE_FIND_FRAMEWORK "LAST")
- endif (APPLE)
-
-+# Offer the user the choice of overriding the installation directories
-+set(INSTALL_LIB_DIR lib CACHE PATH "Installation directory for libraries")
-+set(INSTALL_BIN_DIR bin CACHE PATH "Installation directory for executables")
-+set(INSTALL_INCLUDE_DIR include CACHE PATH "Installation directory for header files")
-+if(WIN32 AND NOT CYGWIN)
-+ set(DEF_INSTALL_CMAKE_DIR CMake)
-+else()
-+ set(DEF_INSTALL_CMAKE_DIR share/mapserver/cmake)
-+endif()
-+set(INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH "Installation directory for CMake files")
-+
-+# Make relative paths absolute (needed later on)
-+foreach(p LIB BIN INCLUDE CMAKE)
-+ set(var INSTALL_${p}_DIR)
-+ if(NOT IS_ABSOLUTE "${${var}}")
-+ set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}")
-+ endif()
-+endforeach()
-
- macro (ms_link_libraries)
- if(BUILD_DYNAMIC)
-@@ -246,6 +264,15 @@ mapgeomtransform.c mapogroutput.c mapwfslayer.c mapagg.cpp mapkml.cpp
- mapgeomutil.cpp mapkmlrenderer.cpp fontcache.c textlayout.c maputfgrid.cpp
- mapogr.cpp mapcontour.c mapsmoothing.c mapv8.cpp ${REGEX_SOURCES} kerneldensity.c)
-
-+set(mapserver_HEADERS
-+cgiutil.h dejavu-sans-condensed.h dxfcolor.h fontcache.h hittest.h mapagg.h
-+mapaxisorder.h mapcopy.h mapentities.h maperror.h mapfile.h mapgml.h maphash.h
-+maphttp.h mapio.h mapkmlrenderer.h maplibxml2.h mapogcfilter.h mapogcsld.h
-+mapoglcontext.h mapoglrenderer.h mapowscommon.h mapows.h mapparser.h
-+mappostgis.h mapprimitive.h mapproject.h mapraster.h mapregex.h mapresample.h
-+mapserver-api.h mapserver.h mapserv.h mapshape.h mapsymbol.h maptemplate.h
-+mapthread.h maptile.h maptime.h maptree.h maputfgrid.h mapwcs.h uthash.h)
-+
- if(BUILD_DYNAMIC)
- add_library(mapserver SHARED ${mapserver_SOURCES} ${agg_SOURCES} ${v8_SOURCES})
- set_target_properties( mapserver PROPERTIES
-@@ -299,6 +326,7 @@ find_package(PNG)
- if(PNG_FOUND)
- include_directories(${PNG_INCLUDE_DIR})
- ms_link_libraries( ${PNG_LIBRARIES})
-+ list(APPEND ALL_INCLUDE_DIRS ${PNG_INCLUDE_DIR})
- set(USE_PNG 1)
- else(PNG_FOUND)
- report_mandatory_not_found(PNG)
-@@ -308,6 +336,7 @@ find_package(JPEG)
- if(JPEG_FOUND)
- include_directories(${JPEG_INCLUDE_DIR})
- ms_link_libraries( ${JPEG_LIBRARY})
-+ list(APPEND ALL_INCLUDE_DIRS ${JPEG_INCLUDE_DIR})
- set(USE_JPEG 1)
- else(JPEG_FOUND)
- report_mandatory_not_found(JPEG)
-@@ -319,6 +348,7 @@ if(NOT FREETYPE_FOUND)
- endif(NOT FREETYPE_FOUND)
- include_directories(${FREETYPE_INCLUDE_DIR})
- ms_link_libraries( ${FREETYPE_LIBRARY})
-+list(APPEND ALL_INCLUDE_DIRS ${FREETYPE_INCLUDE_DIR})
-
-
- if(WITH_PROJ)
-@@ -328,6 +358,7 @@ if(WITH_PROJ)
- else(NOT PROJ_FOUND)
- include_directories(${PROJ_INCLUDE_DIR})
- ms_link_libraries( ${PROJ_LIBRARY})
-+ list(APPEND ALL_INCLUDE_DIRS ${PROJ_INCLUDE_DIR})
- set (USE_PROJ 1)
- endif(NOT PROJ_FOUND)
- endif (WITH_PROJ)
-@@ -337,6 +368,7 @@ if(WITH_PIXMAN)
- if(PIXMAN_FOUND)
- include_directories(${PIXMAN_INCLUDE_DIR})
- ms_link_libraries(${PIXMAN_LIBRARY})
-+ list(APPEND ALL_INCLUDE_DIRS ${PIXMAN_INCLUDE_DIR})
- set (USE_PIXMAN 1)
- else(PIXMAN_FOUND)
- report_optional_not_found(PIXMAN)
-@@ -358,6 +390,7 @@ if(WITH_FRIBIDI)
- else(NOT FRIBIDI_FOUND)
- include_directories(${FRIBIDI_INCLUDE_DIR})
- ms_link_libraries( ${FRIBIDI_LIBRARY})
-+ list(APPEND ALL_INCLUDE_DIRS ${FRIBIDI_INCLUDE_DIR})
- set (USE_FRIBIDI 1)
- if(FRIBIDI_LEGACY)
- message(WARNING "Old Fribidi found, upgrade recommended")
-@@ -372,6 +405,7 @@ if(WITH_HARFBUZZ)
- else(NOT HARFBUZZ_FOUND)
- include_directories(${HARFBUZZ_INCLUDE_DIR})
- ms_link_libraries( ${HARFBUZZ_LIBRARY})
-+ list(APPEND ALL_INCLUDE_DIRS ${HARFBUZZ_INCLUDE_DIR})
- set (USE_HARFBUZZ 1)
- endif(NOT HARFBUZZ_FOUND)
- endif (WITH_HARFBUZZ)
-@@ -389,6 +423,7 @@ if(WITH_ICONV)
- if(ICONV_FOUND)
- include_directories(${ICONV_INCLUDE_DIR})
- ms_link_libraries( ${ICONV_LIBRARY})
-+ list(APPEND ALL_INCLUDE_DIRS ${ICONV_INCLUDE_DIR})
- set (USE_ICONV 1)
- else(ICONV_FOUND)
- report_optional_not_found(ICONV)
-@@ -405,6 +440,7 @@ if(WITH_CAIRO)
- if(CAIRO_FOUND)
- include_directories(${CAIRO_INCLUDE_DIRS})
- ms_link_libraries( ${CAIRO_LIBRARY})
-+ list(APPEND ALL_INCLUDE_DIRS ${CAIRO_INCLUDE_DIR})
- set (USE_CAIRO 1)
- else(CAIRO_FOUND)
- report_optional_not_found(CAIRO)
-@@ -416,6 +452,7 @@ if(WITH_MYSQL)
- if(MYSQL_FOUND)
- include_directories(${MYSQL_INCLUDE_DIR})
- ms_link_libraries( ${MYSQL_LIBRARY})
-+ list(APPEND ALL_INCLUDE_DIRS ${MYSQL_INCLUDE_DIR})
- set (USE_MYSQL 1)
- else(MYSQL_FOUND)
- report_optional_not_found(MYSQL)
-@@ -433,6 +470,7 @@ if(WITH_ORACLESPATIAL OR WITH_ORACLE_PLUGIN)
- find_package(Oracle)
- if(ORACLE_FOUND)
- include_directories(${ORACLE_INCLUDE_DIR})
-+ list(APPEND ALL_INCLUDE_DIRS ${ORACLE_INCLUDE_DIR})
- else(ORACLE_FOUND)
- report_optional_not_found(ORACLESPATIAL)
- #FIXME: error message here could be misleading, only states ORACLESPATIAL whereas
-@@ -459,6 +497,7 @@ if(WITH_MSSQL2008)
- add_library(msplugin_mssql2008 MODULE mapmssql2008.c)
- target_link_libraries(msplugin_mssql2008 ${ODBC_LIBRARY} ${MAPSERVER_LIBMAPSERVER})
- set_target_properties(msplugin_mssql2008 PROPERTIES COMPILE_FLAGS "-DUSE_MSSQL2008_PLUGIN -DUSE_MSSQL2008")
-+ list(APPEND ALL_INCLUDE_DIRS ${ODBC_INCLUDE_DIR})
- set (USE_MSSQL2008 1)
- else(ODBC_FOUND)
- report_optional_not_found(ODBC)
-@@ -470,6 +509,7 @@ if(WITH_FCGI)
- if(FCGI_FOUND)
- include_directories(${FCGI_INCLUDE_DIR})
- target_link_libraries(mapserv ${FCGI_LIBRARY})
-+ list(APPEND ALL_INCLUDE_DIRS ${FCGI_INCLUDE_DIR})
- set (USE_FASTCGI 1)
- else(FCGI_FOUND)
- report_optional_not_found(FCGI)
-@@ -481,6 +521,7 @@ if(WITH_GEOS)
- if(GEOS_FOUND)
- include_directories(${GEOS_INCLUDE_DIR})
- ms_link_libraries( ${GEOS_LIBRARY})
-+ list(APPEND ALL_INCLUDE_DIRS ${GEOS_INCLUDE_DIR})
- set (USE_GEOS 1)
- else(GEOS_FOUND)
- report_optional_not_found(GEOS)
-@@ -500,6 +541,7 @@ if(WITH_POSTGIS)
- include_directories(${POSTGRESQL_INCLUDE_DIR})
- ms_link_libraries( ${POSTGRESQL_LIBRARY})
- CHECK_LIBRARY_EXISTS(pq "PQserverVersion" POSTGRESQL_LIBRARY POSTGIS_HAS_SERVER_VERSION)
-+ list(APPEND ALL_INCLUDE_DIRS ${POSTGRESQL_INCLUDE_DIR})
- set (USE_POSTGIS 1)
- else(POSTGRESQL_FOUND)
- report_optional_not_found(POSTGIS)
-@@ -511,6 +553,7 @@ if(WITH_GDAL)
- if(GDAL_FOUND)
- include_directories(${GDAL_INCLUDE_DIR})
- ms_link_libraries( ${GDAL_LIBRARY})
-+ list(APPEND ALL_INCLUDE_DIRS ${GDAL_INCLUDE_DIR})
- set (USE_GDAL 1)
- else(GDAL_FOUND)
- report_optional_not_found(GDAL)
-@@ -525,6 +568,7 @@ if(WITH_SVGCAIRO)
- if(SVGCAIRO_FOUND)
- include_directories(${SVG_INCLUDE_DIR} ${SVGCAIRO_INCLUDE_DIR})
- ms_link_libraries( ${SVG_LIBRARY} ${SVGCAIRO_LIBRARY})
-+ list(APPEND ALL_INCLUDE_DIRS ${SVG_INCLUDE_DIR} ${SVGCAIRO_INCLUDE_DIR})
- set (USE_SVG_CAIRO 1)
- else(SVGCAIRO_FOUND)
- report_optional_not_found(SVGCAIRO)
-@@ -539,8 +583,10 @@ if(WITH_RSVG)
- if(RSVG_FOUND AND GOBJECT_FOUND)
- include_directories(${RSVG_INCLUDE_DIRS})
- ms_link_libraries( ${RSVG_LIBRARY} )
-+ list(APPEND ALL_INCLUDE_DIRS ${RSVG_INCLUDE_DIRS})
- include_directories(${GOBJECT_INCLUDE_DIRS})
- ms_link_libraries( ${GOBJECT_LIBRARY} )
-+ list(APPEND ALL_INCLUDE_DIRS ${GOBJECT_INCLUDE_DIRS})
- set (USE_RSVG 1)
- else(RSVG_FOUND AND GOBJECT_FOUND)
- report_optional_not_found(RSVG)
-@@ -555,6 +601,7 @@ if(WITH_OGR)
- if(GDAL_FOUND)
- include_directories(${GDAL_INCLUDE_DIR})
- ms_link_libraries( ${GDAL_LIBRARY})
-+ list(APPEND ALL_INCLUDE_DIRS ${GDAL_INCLUDE_DIR})
- set (USE_OGR 1)
- else(GDAL_FOUND)
- message(SEND_ERROR "GDAL library could not be found and is needed for OGR support.
-@@ -574,6 +621,7 @@ if(WITH_CURL)
- if(CURL_FOUND)
- include_directories(${CURL_INCLUDE_DIR})
- ms_link_libraries( ${CURL_LIBRARY})
-+ list(APPEND ALL_INCLUDE_DIRS ${CURL_INCLUDE_DIR})
- set(USE_CURL 1)
- else(CURL_FOUND)
- report_optional_not_found(CURL)
-@@ -652,6 +700,7 @@ if(WITH_LIBXML2)
- set(LIBXML2_LIBRARY ${LIBXML2_LIBRARIES})
- endif()
- ms_link_libraries( ${LIBXML2_LIBRARY})
-+ list(APPEND ALL_INCLUDE_DIRS ${LIBXML2_INCLUDE_DIR})
- set (USE_LIBXML2 1)
- else(LIBXML2_FOUND)
- report_optional_not_found(LIBXML2)
-@@ -716,6 +765,7 @@ if(WITH_XMLMAPFILE)
- endif()
- include_directories(${LIBXSLT_INCLUDE_DIR})
- ms_link_libraries( ${LIBXSLT_LIBRARY} ${LIBXSLT_EXSLT_LIBRARY})
-+ list(APPEND ALL_INCLUDE_DIRS ${LIBXSLT_INCLUDE_DIR})
- set(USE_XMLMAPFILE 1)
- else(LIBXSLT_FOUND)
- message(SEND_ERROR "Xml Mapfile support requires XSLT support which was not found.
-@@ -731,6 +781,7 @@ if(WITH_GIF)
- if(GIF_FOUND)
- include_directories(${GIF_INCLUDE_DIR})
- ms_link_libraries( ${GIF_LIBRARY})
-+ list(APPEND ALL_INCLUDE_DIRS ${GIF_INCLUDE_DIR})
- set(USE_GIF 1)
- else(GIF_FOUND)
- report_optional_not_found(GIF)
-@@ -742,6 +793,7 @@ if(WITH_EXEMPI)
- if(LIBEXEMPI_FOUND)
- include_directories(${LIBEXEMPI_INCLUDE_DIR})
- ms_link_libraries( ${LIBEXEMPI_LIBRARY})
-+ list(APPEND ALL_INCLUDE_DIRS ${LIBEXEMPI_INCLUDE_DIR})
- set(USE_EXEMPI 1)
- else(LIBEXEMPI_FOUND)
- report_optional_not_found(EXEMPI)
-@@ -759,6 +811,7 @@ if(WITH_V8)
- SET(USE_V8_MAPSCRIPT 1)
- INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
- INCLUDE_DIRECTORIES(${V8_INCLUDE})
-+ list(APPEND ALL_INCLUDE_DIRS ${V8_INCLUDE})
- MS_LINK_LIBRARIES( ${V8_LIBS})
- ELSE(V8_FOUND)
- MESSAGE(SEND_ERROR "V8 JavaScript support requested but not found.
-@@ -817,7 +870,9 @@ configure_file (
- "${PROJECT_BINARY_DIR}/mapserver-version.h"
- )
-
--
-+set_target_properties(mapserver PROPERTIES
-+ PUBLIC_HEADER "${mapserver_HEADERS};${PROJECT_BINARY_DIR}/mapserver-config.h;${PROJECT_BINARY_DIR}/mapserver-version.h"
-+)
-
- macro(status_optional_component component enabled libpath)
- if("${enabled}" EQUAL "1")
-@@ -895,7 +950,7 @@ status_optional_feature("Apache Module (Experimental)" "${USE_APACHE_MODULE}")
-
- message(STATUS "")
- message(STATUS "Will install files to ${CMAKE_INSTALL_PREFIX}")
--message(STATUS "Will install libraries to ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
-+message(STATUS "Will install libraries to ${INSTALL_LIB_DIR}")
-
-
- include_directories("${PROJECT_BINARY_DIR}")
-@@ -908,20 +963,67 @@ endif(WIN32)
-
- #INSTALL(FILES mapserver-api.h ${PROJECT_BINARY_DIR}/mapserver-version.h DESTINATION include)
- if(USE_ORACLE_PLUGIN)
-- INSTALL(TARGETS msplugin_oracle DESTINATION ${CMAKE_INSTALL_LIBDIR})
-+ INSTALL(TARGETS msplugin_oracle DESTINATION ${INSTALL_LIB_DIR})
- endif(USE_ORACLE_PLUGIN)
-
- if(USE_MSSQL2008)
-- INSTALL(TARGETS msplugin_mssql2008 DESTINATION ${CMAKE_INSTALL_LIBDIR})
-+ INSTALL(TARGETS msplugin_mssql2008 DESTINATION ${INSTALL_LIB_DIR})
- endif(USE_MSSQL2008)
-
-
--INSTALL(TARGETS sortshp shptree shptreevis msencrypt legend scalebar tile4ms shptreetst shp2img mapserv RUNTIME DESTINATION bin LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
-+INSTALL(TARGETS sortshp shptree shptreevis msencrypt legend scalebar tile4ms shptreetst shp2img mapserv
-+ RUNTIME DESTINATION ${INSTALL_BIN_DIR} COMPONENT bin
-+)
-
- if(BUILD_STATIC)
-- INSTALL(TARGETS mapserver_static DESTINATION ${CMAKE_INSTALL_LIBDIR})
-+ INSTALL(TARGETS mapserver_static
-+ DESTINATION ${INSTALL_LIB_DIR} COMPONENT staticlib
-+ )
- endif(BUILD_STATIC)
- if(BUILD_DYNAMIC)
-- INSTALL(TARGETS mapserver DESTINATION ${CMAKE_INSTALL_LIBDIR})
-+ INSTALL(TARGETS mapserver
-+ EXPORT mapserverTargets
-+ ARCHIVE DESTINATION ${INSTALL_LIB_DIR} COMPONENT shlib
-+ LIBRARY DESTINATION ${INSTALL_LIB_DIR} COMPONENT shlib
-+ PUBLIC_HEADER DESTINATION ${INSTALL_INCLUDE_DIR}/mapserver COMPONENT dev
-+ )
- endif(BUILD_DYNAMIC)
-
-+# Add all targets to the build-tree export set
-+export(TARGETS mapserver
-+ FILE "${PROJECT_BINARY_DIR}/mapserverTargets.cmake"
-+)
-+
-+# Export the package for use from the build-tree
-+# (this registers the build-tree with a global CMake-registry)
-+export(PACKAGE mapserver)
-+
-+list(APPEND ALL_INCLUDE_DIRS ${INSTALL_INCLUDE_DIR})
-+list(APPEND ALL_INCLUDE_DIRS ${INSTALL_INCLUDE_DIR}/mapserver)
-+
-+list(REMOVE_DUPLICATES ALL_INCLUDE_DIRS)
-+
-+# Create the mapserver-config.cmake and mapserver-config-version files
-+file(RELATIVE_PATH REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}" "${ALL_INCLUDE_DIRS}")
-+
-+# ... for the build tree
-+set(CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}" "${PROJECT_BINARY_DIR}")
-+configure_file(mapserver-config.cmake.in "${PROJECT_BINARY_DIR}/mapserver-config.cmake" @ONLY)
-+
-+# ... for the install tree
-+set(CONF_INCLUDE_DIRS "\${MAPSERVER_CMAKE_DIR}/${REL_INCLUDE_DIR}")
-+configure_file(mapserver-config.cmake.in "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/mapserver-config.cmake" @ONLY)
-+
-+# ... for both
-+configure_file(mapserver-config-version.cmake.in "${PROJECT_BINARY_DIR}/mapserver-config-version.cmake" @ONLY)
-+
-+# Install the mapserver-config.cmake and mapserver-config-version.cmake
-+install(FILES "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/mapserver-config.cmake"
-+ "${PROJECT_BINARY_DIR}/mapserver-config-version.cmake"
-+ DESTINATION "${INSTALL_CMAKE_DIR}" COMPONENT dev
-+)
-+
-+# Install the export set for use with the install-tree
-+install(EXPORT mapserverTargets
-+ DESTINATION "${INSTALL_CMAKE_DIR}" COMPONENT dev
-+)
-diff --git a/appveyor.yml b/appveyor.yml
-new file mode 100644
-index 0000000..62b072f
---- /dev/null
-+++ b/appveyor.yml
-@@ -0,0 +1,56 @@
-+platform:
-+- x64
-+- x86
-+
-+environment:
-+ matrix:
-+#
-+# VS 2010
-+# - VS_VERSION: Visual Studio 10
-+#
-+# VS 2012
-+# - VS_VERSION: Visual Studio 11
-+#
-+# VS 2013
-+ - VS_VERSION: Visual Studio 12
-+
-+shallow_clone: true
-+
-+build_script:
-+ - echo build_script
-+ - if "%platform%" == "x64" SET VS_FULL=%VS_VERSION% Win64
-+ - if "%platform%" == "x86" SET VS_FULL=%VS_VERSION%
-+ - if "%platform%" == "x86" SET SDK=release-1800
-+ - if "%platform%" == "x64" SET SDK=release-1800-x64
-+ - echo "%VS_FULL%"
-+ - set SDK_ZIP=%SDK%-dev.zip
-+ - set SDK_URL=http://download.gisinternals.com/sdk/downloads/%SDK_ZIP%
-+ - echo "%SDK_ZIP%"
-+ - echo "%SDK_URL%"
-+ - mkdir sdk
-+ - cd sdk
-+ - appveyor DownloadFile "%SDK_URL%"
-+ - 7z x "%SDK_ZIP%" > nul
-+ - cd %SDK%
-+ - cd lib
-+ - copy libpng.lib libpng.lib.lib
-+ - cd ..
-+ - cd ..
-+ - cd ..
-+ - set SDK_PREFIX=%CD%\sdk\%SDK%
-+ - set SDK_INC=%CD%\sdk\%SDK%\include
-+ - set SDK_LIB=%CD%\sdk\%SDK%\lib
-+ - set SDK_BIN=%CD%\sdk\%SDK%\bin
-+ - set SWIG_EXECUTABLE=%CD%\sdk\SWIG-1.3.39\swig.exe
-+ - set REGEX_DIR=%CD%\sdk\regex-0.12
-+ - if "%platform%" == "x86" SET PYTHON_EXECUTABLE=c:\python27\python.exe
-+ - if "%platform%" == "x64" SET PYTHON_EXECUTABLE=c:\python27-x64\python.exe
-+ - mkdir build
-+ - cd build
-+ - cmake -G "%VS_FULL%" .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=%SDK_PREFIX% -DFREETYPE_INCLUDE_DIR_freetype2=%SDK_INC%\freetype -DFREETYPE_INCLUDE_DIR_ft2build=%SDK_INC%\freetype -DFREETYPE_LIBRARY=%SDK_LIB%\freetype2411.lib -DZLIB_INCLUDE_DIR=%SDK_INC% -DZLIB_LIBRARY=%SDK_LIB%\zlib.lib -DPNG_PNG_INCLUDE_DIR=%SDK_INC% -DPNG_LIBRARY=%SDK_LIB%\libpng.lib -DPNG_LIBRARIES=%SDK_LIB%\libpng.lib -DJPEG_INCLUDE_DIR=%SDK_INC% -DJPEG_LIBRARY=%SDK_LIB%\libjpeg.lib -DWITH_PROJ=1 -DPROJ_INCLUDE_DIR=%SDK_INC% -DPROJ_LIBRARY=%SDK_LIB%\proj_i.lib -DFRIBIDI_INCLUDE_DIR=%SDK_INC% -DFRIBIDI_LIBRARY=%SDK_LIB%\fribidi.lib -DHARFBUZZ_INCLUDE_DIR=%SDK_INC%\harfbuzz -DHARFBUZZ_LIBRARY=%SDK_LIB%\harfbuzz.lib -DICONV_INCLUDE_DIR=%SDK_INC% -DICONV_LIBRARY=%SDK_LIB%\iconv.lib -DICONV_DLL=%SDK_BIN%\iconv.dll -DCAIRO_INCLUDE_DIR=%SDK_INC% -DCAIRO_LIBRARY=%SDK_LIB%\cairo.lib -DFCGI_INCLUDE_DIR=%SDK_INC% -DFCGI_LIBRARY=%SDK_LIB%\libfcgi.lib -DGEOS_INCLUDE_DIR=%SDK_INC% -DGEOS_LIBRARY=%SDK_LIB%\geos_c.lib -DPOSTGRESQL_INCLUDE_DIR=%SDK_INC% -DPOSTGRESQL_LIBRARY=%SDK_LIB%\libpqdll.lib -DGDAL_INCLUDE_DIR=%SDK_INC% -DGDAL_LIBRARY=%SDK_LIB%\gdal_i.lib -DLIBXML2_INCLUDE_DIR=%SDK_INC%\libxml -DLIBXML2_LIBRARIES=%SDK_LIB%\libxml2.lib -DGIF_INCLUDE_DIR=%SDK_INC% -DGIF_LIBRARY=%SDK_LIB%\giflib.lib -DWITH_CURL=1 -DCURL_INCLUDE_DIR=%SDK_INC% -DCURL_LIBRARY=%SDK_LIB%\libcurl_imp.lib -DMS_EXTERNAL_LIBS=wsock32.lib -DWITH_SOS=1 -DWITH_CLIENT_WFS=1 -DWITH_CLIENT_WMS=1 -DSVG_INCLUDE_DIR=%SDK_INC% -DSVG_LIBRARY=%SDK_LIB%\libsvg.lib -DSVGCAIRO_INCLUDE_DIR=%SDK_INC% -DSVGCAIRO_LIBRARY=%SDK_LIB%\libsvg-cairo.lib -DWITH_SVGCAIRO=1 -DREGEX_DIR=%REGEX_DIR% -DWITH_POINT_Z_M=1 -DWITH_KML=1 -DWITH_THREAD_SAFETY=1 -DSWIG_EXECUTABLE=%SWIG_EXECUTABLE% -DWITH_PYTHON=1 -DPYTHON_EXECUTABLE=%PYTHON_EXECUTABLE%
-+ - cmake --build . --config Release
-+
-+test_script:
-+ - echo test_script
-+
-+deploy: off
-diff --git a/mapagg.cpp b/mapagg.cpp
-index a9666a0..e214d51 100644
---- a/mapagg.cpp
-+++ b/mapagg.cpp
-@@ -822,6 +822,8 @@ imageObj *agg2CreateImage(int width, int height, outputFormatObj *format, colorO
- if( (AGG_INT64U)bufSize != bufSize64 ) {
- msSetError(MS_MEMERR, "%s: %d: Out of memory allocating " AGG_INT64U_FRMT " bytes.\n", "agg2CreateImage()",
- __FILE__, __LINE__, bufSize64);
-+ free(image);
-+ delete r;
- return NULL;
- }
-
-@@ -830,6 +832,7 @@ imageObj *agg2CreateImage(int width, int height, outputFormatObj *format, colorO
- msSetError(MS_MEMERR, "%s: %d: Out of memory allocating " AGG_INT64U_FRMT " bytes.\n", "agg2CreateImage()",
- __FILE__, __LINE__, bufSize64);
- free(image);
-+ delete r;
- return NULL;
- }
- r->m_rendering_buffer.attach(r->buffer, width, height, width * 4);
-diff --git a/mapdraw.c b/mapdraw.c
-index 1a7a73a..94c95cc 100644
---- a/mapdraw.c
-+++ b/mapdraw.c
-@@ -973,6 +973,7 @@ int msDrawVectorLayer(mapObj *map, layerObj *layer, imageObj *image)
- }
-
- if(maxfeatures >=0 && featuresdrawn >= maxfeatures) {
-+ msFreeShape(&shape);
- status = MS_DONE;
- break;
- }
-@@ -995,12 +996,14 @@ int msDrawVectorLayer(mapObj *map, layerObj *layer, imageObj *image)
- if(strcasecmp(layer->styleitem, "AUTO") == 0) {
- if(msLayerGetAutoStyle(map, layer, layer->class[shape.classindex], &shape) != MS_SUCCESS) {
- retcode = MS_FAILURE;
-+ msFreeShape(&shape);
- break;
- }
- } else {
- /* Generic feature style handling as per RFC-61 */
- if(msLayerGetFeatureStyle(map, layer, layer->class[shape.classindex], &shape) != MS_SUCCESS) {
- retcode = MS_FAILURE;
-+ msFreeShape(&shape);
- break;
- }
- }
-@@ -1060,6 +1063,7 @@ int msDrawVectorLayer(mapObj *map, layerObj *layer, imageObj *image)
-
- if(cache) {
- if(insertFeatureList(&shpcache, &shape) == NULL) {
-+ msFreeShape(&shape);
- retcode = MS_FAILURE; /* problem adding to the cache */
- break;
- }
-diff --git a/mapimageio.c b/mapimageio.c
-index e6bdcb5..771188b 100644
---- a/mapimageio.c
-+++ b/mapimageio.c
-@@ -391,11 +391,13 @@ int readPalette(const char *palette, rgbaPixel *entries, unsigned int *nEntries,
- continue; /* skip comments and blank lines */
- if(!useAlpha) {
- if(3 != sscanf(buffer,"%d,%d,%d\n",&r,&g,&b)) {
-+ fclose(stream);
- msSetError(MS_MISCERR,"failed to parse color %d r,g,b triplet in line \"%s\" from file %s","readPalette()",*nEntries+1,buffer,palette);
- return MS_FAILURE;
- }
- } else {
- if(4 != sscanf(buffer,"%d,%d,%d,%d\n",&r,&g,&b,&a)) {
-+ fclose(stream);
- msSetError(MS_MISCERR,"failed to parse color %d r,g,b,a quadruplet in line \"%s\" from file %s","readPalette()",*nEntries+1,buffer,palette);
- return MS_FAILURE;
- }
-@@ -1058,6 +1060,13 @@ int readGIF(char *path, rasterBufferObj *rb)
-
- } while (recordType != TERMINATE_RECORD_TYPE);
-
-+
-+#if defined GIFLIB_MAJOR && GIFLIB_MINOR && ((GIFLIB_MAJOR == 5 && GIFLIB_MINOR >= 1) || (GIFLIB_MAJOR > 5))
-+ if (DGifCloseFile(image, &errcode) == GIF_ERROR) {
-+ msSetError(MS_MISCERR,"failed to close gif after loading: %s","readGIF()", gif_error_msg(errcode));
-+ return MS_FAILURE;
-+ }
-+#else
- if (DGifCloseFile(image) == GIF_ERROR) {
- #if defined GIFLIB_MAJOR && GIFLIB_MAJOR >= 5
- msSetError(MS_MISCERR,"failed to close gif after loading: %s","readGIF()", gif_error_msg(image->Error));
-@@ -1066,6 +1075,7 @@ int readGIF(char *path, rasterBufferObj *rb)
- #endif
- return MS_FAILURE;
- }
-+#endif
-
- return MS_SUCCESS;
- }
-@@ -1082,6 +1092,7 @@ int msLoadMSRasterBufferFromFile(char *path, rasterBufferObj *rb)
- return MS_FAILURE;
- }
- if(1 != fread(signature,8,1,stream)) {
-+ fclose(stream);
- msSetError(MS_MISCERR, "Unable to read header from image file %s", "msLoadMSRasterBufferFromFile()",path);
- return MS_FAILURE;
- }
-diff --git a/mapjoin.c b/mapjoin.c
-index 6353d64..9bb24ed 100644
---- a/mapjoin.c
-+++ b/mapjoin.c
-@@ -362,6 +362,7 @@ int msCSVJoinConnect(layerObj *layer, joinObj *join)
- rewind(stream);
-
- if((joininfo->rows = (char ***) malloc(joininfo->numrows*sizeof(char **))) == NULL) {
-+ fclose(stream);
- msSetError(MS_MEMERR, "Error allocating rows.", "msCSVJoinConnect()");
- return(MS_FAILURE);
- }
-diff --git a/maplabel.c b/maplabel.c
-index 6b804e1..d9d40bf 100644
---- a/maplabel.c
-+++ b/maplabel.c
-@@ -328,7 +328,7 @@ int msAddLabelGroup(mapObj *map, imageObj *image, int layerindex, int classindex
- }
- annotext = msShapeGetLabelAnnotation(layerPtr,shape,lbl);
- if(!annotext) {
-- for(s=0;s<lbl->numstyles;l++) {
-+ for(s=0;s<lbl->numstyles;s++) {
- if(lbl->styles[s]->_geomtransform.type == MS_GEOMTRANSFORM_LABELPOINT)
- break; /* we have a "symbol only label, so we shouldn't skip this label */
- }
-diff --git a/mapogcsld.c b/mapogcsld.c
-index a24dc4e..465421d 100644
---- a/mapogcsld.c
-+++ b/mapogcsld.c
-@@ -162,6 +162,12 @@ int msSLDApplySLD(mapObj *map, char *psSLDXML, int iLayer, char *pszStyleLayerNa
- layerObj *lp = NULL;
-
- pasLayers = msSLDParseSLD(map, psSLDXML, &nLayers);
-+ if( pasLayers == NULL ) {
-+ errorObj* psError = msGetErrorObj();
-+ if( psError && psError->code != MS_NOERR )
-+ return MS_FAILURE;
-+ }
-+
- /* -------------------------------------------------------------------- */
- /* If the same layer is given more that once, we need to */
- /* duplicate it. */
-@@ -391,10 +397,37 @@ int msSLDApplySLD(mapObj *map, char *psSLDXML, int iLayer, char *pszStyleLayerNa
- goto sld_cleanup;
- }
- } else {
-+ lp = GET_LAYER(map, i);
-+
-+ /* The SLD might have a FeatureTypeConstraint */
-+ if( pasLayers[j].filter.type == MS_EXPRESSION )
-+ {
-+ if( lp->filter.string && lp->filter.type == MS_EXPRESSION )
-+ {
-+ pszBuffer = msStringConcatenate(NULL, "((");
-+ pszBuffer = msStringConcatenate(pszBuffer, lp->filter.string);
-+ pszBuffer = msStringConcatenate(pszBuffer, ") AND (");
-+ pszBuffer = msStringConcatenate(pszBuffer, pasLayers[j].filter.string);
-+ pszBuffer = msStringConcatenate(pszBuffer, "))");
-+ msFreeExpression(&lp->filter);
-+ msInitExpression(&lp->filter);
-+ lp->filter.string = pszBuffer;
-+ lp->filter.type = MS_EXPRESSION;
-+
-+ pszBuffer = NULL;
-+ }
-+ else
-+ {
-+ msFreeExpression(&lp->filter);
-+ msInitExpression(&lp->filter);
-+ lp->filter.string = msStrdup(pasLayers[j].filter.string);
-+ lp->filter.type = MS_EXPRESSION;
-+ }
-+ }
-+
- /*in some cases it would make sense to concatenate all the class
- expressions and use it to set the filter on the layer. This
- could increase performace. Will do it for db types layers #2840*/
-- lp = GET_LAYER(map, i);
- if (lp->filter.string == NULL || (lp->filter.string && lp->filter.type == MS_STRING && !lp->filteritem)) {
- if (lp->connectiontype == MS_POSTGIS || lp->connectiontype == MS_ORACLESPATIAL || lp->connectiontype == MS_PLUGIN) {
- if (lp->numclasses > 0) {
-@@ -596,7 +629,15 @@ layerObj *msSLDParseSLD(mapObj *map, char *psSLDXML, int *pnLayers)
- if (psName && psName->psChild && psName->psChild->pszValue)
- pasLayers[iLayer].name = msStrdup(psName->psChild->pszValue);
-
-- msSLDParseNamedLayer(psNamedLayer, &pasLayers[iLayer]);
-+ if( msSLDParseNamedLayer(psNamedLayer, &pasLayers[iLayer]) != MS_SUCCESS ) {
-+ int i;
-+ for (i=0; i<=iLayer; i++)
-+ freeLayer(&pasLayers[i]);
-+ msFree(pasLayers);
-+ nLayers = 0;
-+ pasLayers = NULL;
-+ break;
-+ }
-
- psNamedLayer = psNamedLayer->psNext;
- iLayer++;
-@@ -708,6 +749,79 @@ void _SLDApplyRuleValues(CPLXMLNode *psRule, layerObj *psLayer,
-
- }
-
-+/************************************************************************/
-+/* msSLDGetCommonExpressionFromFilter */
-+/* */
-+/* Get a commomn expression valid from the filter valid for the */
-+/* temporary layer. */
-+/************************************************************************/
-+static char* msSLDGetCommonExpressionFromFilter(CPLXMLNode* psFilter,
-+ layerObj *psLayer)
-+{
-+ char *pszExpression = NULL;
-+ CPLXMLNode *psTmpNextNode = NULL;
-+ CPLXMLNode *psTmpNode = NULL;
-+ FilterEncodingNode *psNode = NULL;
-+ char *pszTmpFilter = NULL;
-+ layerObj *psCurrentLayer = NULL;
-+ const char *pszWmsName=NULL;
-+ const char *key=NULL;
-+
-+ /* clone the tree and set the next node to null */
-+ /* so we only have the Filter node */
-+ psTmpNode = CPLCloneXMLTree(psFilter);
-+ psTmpNextNode = psTmpNode->psNext;
-+ psTmpNode->psNext = NULL;
-+ pszTmpFilter = CPLSerializeXMLTree(psTmpNode);
-+ psTmpNode->psNext = psTmpNextNode;
-+ CPLDestroyXMLNode(psTmpNode);
-+
-+ if (pszTmpFilter) {
-+ psNode = FLTParseFilterEncoding(pszTmpFilter);
-+
-+ CPLFree(pszTmpFilter);
-+ }
-+
-+ if (psNode) {
-+ int j;
-+
-+ /*preparse the filter for possible gml aliases set on the layer's metada:
-+ "gml_NA3DESC_alias" "alias_name" and filter could be
-+ <ogc:PropertyName>alias_name</ogc:PropertyName> #3079*/
-+ for (j=0; j<psLayer->map->numlayers; j++) {
-+ psCurrentLayer = GET_LAYER(psLayer->map, j);
-+
-+ pszWmsName = msOWSLookupMetadata(&(psCurrentLayer->metadata), "MO", "name");
-+
-+ if ((psCurrentLayer->name && psLayer->name &&
-+ strcasecmp(psCurrentLayer->name, psLayer->name) == 0) ||
-+ (psCurrentLayer->group && psLayer->name &&
-+ strcasecmp(psCurrentLayer->group, psLayer->name) == 0) ||
-+ (psLayer->name && pszWmsName &&
-+ strcasecmp(pszWmsName, psLayer->name) == 0))
-+ break;
-+ }
-+ if (j < psLayer->map->numlayers) {
-+ /*make sure that the tmp layer has all the metadata that
-+ the orinal layer has, allowing to do parsing for
-+ such things as gml_attribute_type #3052*/
-+ while (1) {
-+ key = msNextKeyFromHashTable(&psCurrentLayer->metadata, key);
-+ if (!key)
-+ break;
-+ else
-+ msInsertHashTable(&psLayer->metadata, key,
-+ msLookupHashTable(&psCurrentLayer->metadata, key));
-+ }
-+ FLTPreParseFilterForAliasAndGroup(psNode, psLayer->map, j, "G");
-+ }
-+
-+ pszExpression = FLTGetCommonExpression(psNode, psLayer);
-+ FLTFreeFilterEncodingNode(psNode);
-+ }
-+
-+ return pszExpression;
-+}
-
- /************************************************************************/
- /* msSLDParseNamedLayer */
-@@ -719,15 +833,9 @@ int msSLDParseNamedLayer(CPLXMLNode *psRoot, layerObj *psLayer)
- CPLXMLNode *psFeatureTypeStyle, *psRule, *psUserStyle;
- CPLXMLNode *psSLDName = NULL, *psNamedStyle=NULL;
- CPLXMLNode *psElseFilter = NULL, *psFilter=NULL;
-- CPLXMLNode *psTmpNode = NULL;
-- FilterEncodingNode *psNode = NULL;
-+ CPLXMLNode *psLayerFeatureConstraints = NULL;
- int nNewClasses=0, nClassBeforeFilter=0, nClassAfterFilter=0;
- int nClassAfterRule=0, nClassBeforeRule=0;
-- char *pszTmpFilter = NULL;
-- layerObj *psCurrentLayer = NULL;
-- const char *pszWmsName=NULL;
-- int j=0;
-- const char *key=NULL;
-
- if (!psRoot || !psLayer)
- return MS_FAILURE;
-@@ -772,67 +880,10 @@ int msSLDParseNamedLayer(CPLXMLNode *psRoot, layerObj *psLayer)
- /* -------------------------------------------------------------------- */
- psFilter = CPLGetXMLNode(psRule, "Filter");
- if (psFilter && psFilter->psChild && psFilter->psChild->pszValue) {
-- CPLXMLNode *psTmpNextNode = NULL;
-- /* clone the tree and set the next node to null */
-- /* so we only have the Filter node */
-- psTmpNode = CPLCloneXMLTree(psFilter);
-- psTmpNextNode = psTmpNode->psNext;
-- psTmpNode->psNext = NULL;
-- pszTmpFilter = CPLSerializeXMLTree(psTmpNode);
-- psTmpNode->psNext = psTmpNextNode;
-- CPLDestroyXMLNode(psTmpNode);
--
-- if (pszTmpFilter) {
-- /* nTmp = strlen(psFilter->psChild->pszValue)+17; */
-- /* pszTmpFilter = malloc(sizeof(char)*nTmp); */
-- /* sprintf(pszTmpFilter,"<Filter>%s</Filter>", */
-- /* psFilter->psChild->pszValue); */
-- /* pszTmpFilter[nTmp-1]='\0'; */
-- psNode = FLTParseFilterEncoding(pszTmpFilter);
--
-- CPLFree(pszTmpFilter);
-- }
--
-- if (psNode) {
-- char *pszExpression = NULL;
-- int i;
--
-- /*preparse the filter for possible gml aliases set on the layer's metada:
-- "gml_NA3DESC_alias" "alias_name" and filter could be
-- <ogc:PropertyName>alias_name</ogc:PropertyName> #3079*/
-- for (j=0; j<psLayer->map->numlayers; j++) {
-- psCurrentLayer = GET_LAYER(psLayer->map, j);
--
-- pszWmsName = msOWSLookupMetadata(&(psCurrentLayer->metadata), "MO", "name");
--
-- if ((psCurrentLayer->name && psLayer->name &&
-- strcasecmp(psCurrentLayer->name, psLayer->name) == 0) ||
-- (psCurrentLayer->group && psLayer->name &&
-- strcasecmp(psCurrentLayer->group, psLayer->name) == 0) ||
-- (psLayer->name && pszWmsName &&
-- strcasecmp(pszWmsName, psLayer->name) == 0))
-- break;
-- }
-- if (j < psLayer->map->numlayers) {
-- /*make sure that the tmp layer has all the metadata that
-- the orinal layer has, allowing to do parsing for
-- such things as gml_attribute_type #3052*/
-- while (1) {
-- key = msNextKeyFromHashTable(&psCurrentLayer->metadata, key);
-- if (!key)
-- break;
-- else
-- msInsertHashTable(&psLayer->metadata, key,
-- msLookupHashTable(&psCurrentLayer->metadata, key));
-- }
-- FLTPreParseFilterForAliasAndGroup(psNode, psLayer->map, j, "G");
-- }
--
-- pszExpression = FLTGetCommonExpression(psNode, psLayer);
-- FLTFreeFilterEncodingNode(psNode);
-- psNode = NULL;
--
-- if (pszExpression) {
-+ char* pszExpression = msSLDGetCommonExpressionFromFilter(psFilter,
-+ psLayer);
-+ if (pszExpression) {
-+ int i;
- nNewClasses =
- nClassAfterFilter - nClassBeforeFilter;
- for (i=0; i<nNewClasses; i++) {
-@@ -846,8 +897,6 @@ int msSLDParseNamedLayer(CPLXMLNode *psRoot, layerObj *psLayer)
- }
- msFree(pszExpression);
- pszExpression = NULL;
-- }
--
- }
- }
- nClassAfterRule = psLayer->numclasses;
-@@ -899,6 +948,47 @@ int msSLDParseNamedLayer(CPLXMLNode *psRoot, layerObj *psLayer)
- }
- }
-
-+ /* Deal with LayerFeatureConstraints */
-+ psLayerFeatureConstraints = CPLGetXMLNode(psRoot, "LayerFeatureConstraints");
-+ if( psLayerFeatureConstraints != NULL ) {
-+ CPLXMLNode* psIter = psLayerFeatureConstraints->psChild;
-+ CPLXMLNode* psFeatureTypeConstraint = NULL;
-+ for(; psIter != NULL; psIter = psIter->psNext ) {
-+ if( psIter->eType == CXT_Element &&
-+ strcmp(psIter->pszValue, "FeatureTypeConstraint") == 0 ) {
-+ if( psFeatureTypeConstraint == NULL ) {
-+ psFeatureTypeConstraint = psIter;
-+ } else {
-+ msSetError(MS_WMSERR, "Only one single FeatureTypeConstraint element "
-+ "per LayerFeatureConstraints is supported", "");
-+ return MS_FAILURE;
-+ }
-+ }
-+ }
-+ if( psFeatureTypeConstraint != NULL ) {
-+ if( CPLGetXMLNode(psFeatureTypeConstraint, "FeatureTypeName") != NULL ) {
-+ msSetError(MS_WMSERR, "FeatureTypeName element is not "
-+ "supported in FeatureTypeConstraint", "");
-+ return MS_FAILURE;
-+ }
-+ if( CPLGetXMLNode(psFeatureTypeConstraint, "Extent") != NULL ) {
-+ msSetError(MS_WMSERR, "Extent element is not "
-+ "supported in FeatureTypeConstraint", "");
-+ return MS_FAILURE;
-+ }
-+ psFilter = CPLGetXMLNode(psFeatureTypeConstraint, "Filter");
-+ if (psFilter && psFilter->psChild && psFilter->psChild->pszValue) {
-+ char* pszExpression = msSLDGetCommonExpressionFromFilter(psFilter,
-+ psLayer);
-+ if (pszExpression) {
-+ msInitExpression(&psLayer->filter);
-+ psLayer->filter.string = pszExpression;
-+ psLayer->filter.type = MS_EXPRESSION;
-+ }
-+ }
-+ }
-+ }
-+
- return MS_SUCCESS;
- }
-
-@@ -4714,7 +4804,6 @@ FilterEncodingNode *BuildExpressionTree(char *pszExpression,
- {
- int nLength = 0;
- int nOperators=0;
-- char *pszFinalExpression = NULL;
- char *pszComparionValue=NULL, *pszAttibuteName=NULL;
- char *pszAttibuteValue=NULL;
- char *pszLeftExpression=NULL, *pszRightExpression=NULL, *pszOperator=NULL;
-@@ -4722,9 +4811,6 @@ FilterEncodingNode *BuildExpressionTree(char *pszExpression,
- if (!pszExpression || (nLength = strlen(pszExpression)) <=0)
- return NULL;
-
-- pszFinalExpression = (char *)malloc(sizeof(char)*(nLength+1));
-- pszFinalExpression[0] = '\0';
--
- /* -------------------------------------------------------------------- */
- /* First we check how many logical operators are there : */
- /* - if none : It means It is a comparision operator (like =, */
-@@ -4845,7 +4931,6 @@ FilterEncodingNode *BuildExpressionTree(char *pszExpression,
-
- return psNode;
- } else {
-- msFree(pszFinalExpression);
- return NULL;
- }
- }
-diff --git a/mapogr.cpp b/mapogr.cpp
-index 1708d1c..07acdba 100644
---- a/mapogr.cpp
-+++ b/mapogr.cpp
-@@ -901,6 +901,14 @@ static char **msOGRGetValues(layerObj *layer, OGRFeatureH hFeature)
- msDebug(MSOGR_SYMBOLPARAMNAME " = \"%s\"\n", values[i]);
- }
- else {
-+ msFreeCharArray(values,i);
-+
-+ OGR_SM_Destroy(hStyleMgr);
-+ OGR_ST_Destroy(hLabelStyle);
-+ OGR_ST_Destroy(hPenStyle);
-+ OGR_ST_Destroy(hBrushStyle);
-+ OGR_ST_Destroy(hSymbolStyle);
-+
- msSetError(MS_OGRERR,"Invalid field index!?!","msOGRGetValues()");
- return(NULL);
- }
-diff --git a/mapogroutput.c b/mapogroutput.c
-index 770dd3f..c307fc5 100644
---- a/mapogroutput.c
-+++ b/mapogroutput.c
-@@ -175,8 +175,15 @@ static void msOGRCleanupDS( const char *datasource_name )
- char **file_list;
- char path[MS_MAXPATHLEN];
- int i;
-+ VSIStatBufL sStatBuf;
-+
-+ if( VSIStatL( datasource_name, &sStatBuf ) != 0 )
-+ return;
-+ if( VSI_ISDIR( sStatBuf.st_mode ) )
-+ strlcpy( path, datasource_name, sizeof(path) );
-+ else
-+ strlcpy( path, CPLGetPath( datasource_name ), sizeof(path) );
-
-- strlcpy( path, CPLGetPath( datasource_name ), sizeof(path) );
- file_list = CPLReadDir( path );
-
- for( i = 0; file_list != NULL && file_list[i] != NULL; i++ ) {
-@@ -195,11 +202,7 @@ static void msOGRCleanupDS( const char *datasource_name )
- if( VSI_ISREG( sStatBuf.st_mode ) ) {
- VSIUnlink( full_filename );
- } else if( VSI_ISDIR( sStatBuf.st_mode ) ) {
-- char fake_ds_name[MS_MAXPATHLEN];
-- strlcpy( fake_ds_name,
-- CPLFormFilename( full_filename, "abc.dat", NULL ),
-- sizeof(fake_ds_name) );
-- msOGRCleanupDS( fake_ds_name );
-+ msOGRCleanupDS( full_filename );
- }
- }
-
-@@ -681,6 +684,7 @@ int msOGRWriteFromQuery( mapObj *map, outputFormatObj *format, int sendheaders )
- char **layer_options = NULL;
- char **file_list = NULL;
- int iLayer, i;
-+ int bDataSourceNameIsRequestDir = FALSE;
-
- /* -------------------------------------------------------------------- */
- /* Fetch the output format driver. */
-@@ -805,26 +809,15 @@ int msOGRWriteFromQuery( mapObj *map, outputFormatObj *format, int sendheaders )
- if( EQUAL(CPLGetExtension(datasource_name), "") ) {
- strcat(datasource_name, ".dat");
- }
-- else if( EQUAL(CPLGetExtension(datasource_name), "shp") )
-- {
-- int nNonEmptyLayers = 0;
-- for( iLayer = 0; iLayer < map->numlayers; iLayer++ ) {
-- layerObj *layer = GET_LAYER(map, iLayer);
-- if( !layer->resultcache || layer->resultcache->numresults == 0 )
-- continue;
-- nNonEmptyLayers ++;
-- }
-- /* The shapefile driver will be somehow confused if trying to create */
-- /* a datasource named foo.shp when there are several layers in it */
-- /* It would create the first layer as datasource_name.shp and the next ones */
-- /* with layer_name.shp */
-- /* so remove the shp extension in that case, so that all layers are */
-- /* exported with their names */
-- if( nNonEmptyLayers > 1 )
-- {
-- *strrchr(datasource_name, '.') = '\0';
-- }
-- }
-+ }
-+
-+ /* Shapefile and MapInfo driver only properly work with multiple layers */
-+ /* if the output dataset name is a directory */
-+ if( EQUAL(format->driver+4, "ESRI Shapefile") ||
-+ EQUAL(format->driver+4, "MapInfo File") )
-+ {
-+ bDataSourceNameIsRequestDir = TRUE;
-+ strcpy(datasource_name, request_dir);
- }
- }
- else
-@@ -959,9 +952,9 @@ int msOGRWriteFromQuery( mapObj *map, outputFormatObj *format, int sendheaders )
- OGR_DS_Destroy( hDS );
- msOGRCleanupDS( datasource_name );
- msSetError( MS_MISCERR,
-- "OGR CreateDataSource failed for '%s' with driver '%s'.",
-+ "OGR OGR_DS_CreateLayer failed for layer '%s' with driver '%s'.",
- "msOGRWriteFromQuery()",
-- datasource_name,
-+ layer->name,
- format->driver+4 );
- return MS_FAILURE;
- }
-@@ -1139,8 +1132,13 @@ int msOGRWriteFromQuery( mapObj *map, outputFormatObj *format, int sendheaders )
- } else {
- char datasource_path[MS_MAXPATHLEN];
-
-- strncpy( datasource_path, CPLGetPath( datasource_name ), MS_MAXPATHLEN-1 );
-- file_list = msOGRRecursiveFileList( datasource_path );
-+ if( bDataSourceNameIsRequestDir )
-+ file_list = msOGRRecursiveFileList( datasource_name );
-+ else
-+ {
-+ strncpy( datasource_path, CPLGetPath( datasource_name ), MS_MAXPATHLEN-1 );
-+ file_list = msOGRRecursiveFileList( datasource_path );
-+ }
- }
-
- /* -------------------------------------------------------------------- */
-diff --git a/mapproject.c b/mapproject.c
-index 49ebf31..fb234ad 100644
---- a/mapproject.c
-+++ b/mapproject.c
-@@ -1030,6 +1030,10 @@ static projectionObj* msGetProjectNormalized( const projectionObj* p )
- memmove(pnew->args + i, pnew->args + i + 1,
- sizeof(char*) * (pnew->numargs - 1 -i ));
- }
-+ else
-+ {
-+ msFree(pnew->args[i]);
-+ }
- pnew->numargs --;
- i --;
- continue;
-diff --git a/maprendering.c b/maprendering.c
-index 4a50d62..7ee3692 100644
---- a/maprendering.c
-+++ b/maprendering.c
-@@ -1024,7 +1024,6 @@ int msDrawTextSymbol(mapObj *map, imageObj *image, pointObj labelPnt, textSymbol
- if(MS_VALID_COLOR(ts->label->outlinecolor))
- oc = &ts->label->outlinecolor;
- ow = MS_NINT((double)ts->label->outlinewidth * ((double)ts->textpath->glyph_size / (double)ts->label->size));
-- msDebug("setting outlinewidth to %d (%d, %d, %d)\n",ow,ts->label->outlinewidth, ts->textpath->glyph_size, ts->label->size);
- if(!renderer->renderGlyphs) return MS_FAILURE;
- return renderer->renderGlyphs(image,ts->textpath,c,oc,ow);
-
-diff --git a/mapscript/csharp/examples/drawquery.cs b/mapscript/csharp/examples/drawquery.cs
-index 457320f..e78d8a7 100644
---- a/mapscript/csharp/examples/drawquery.cs
-+++ b/mapscript/csharp/examples/drawquery.cs
-@@ -55,7 +55,7 @@ class DrawQuery
- QueryByAttribute(args[1], map, ZoomToResults);
-
- map.querymap.status = mapscript.MS_ON;
-- map.querymap.color.setRGB(0,0,255);
-+ map.querymap.color.setRGB(0,0,255,255);
- map.querymap.style = (int)MS_QUERYMAP_STYLES.MS_HILITE;
-
- try
-diff --git a/mapserver-config-version.cmake.in b/mapserver-config-version.cmake.in
-new file mode 100644
-index 0000000..251e401
---- /dev/null
-+++ b/mapserver-config-version.cmake.in
-@@ -0,0 +1,11 @@
-+set(PACKAGE_VERSION "@MapServer_VERSION_STRING@")
-+
-+# Check whether the requested PACKAGE_FIND_VERSION is compatible
-+if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
-+ set(PACKAGE_VERSION_COMPATIBLE FALSE)
-+else()
-+ set(PACKAGE_VERSION_COMPATIBLE TRUE)
-+ if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
-+ set(PACKAGE_VERSION_EXACT TRUE)
-+ endif()
-+endif()
-diff --git a/mapserver-config.cmake.in b/mapserver-config.cmake.in
-new file mode 100644
-index 0000000..91828d8
---- /dev/null
-+++ b/mapserver-config.cmake.in
-@@ -0,0 +1,18 @@
-+# - Config file for the mapserver package
-+# It defines the following variables
-+# MAPSERVER_INCLUDE_DIRS - include directories for mapserver
-+# MAPSERVER_LIBRARIES - libraries to link against
-+# MAPSERVER_EXECUTABLES - executables build for mapserver
-+
-+# Compute paths
-+get_filename_component(MAPSERVER_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
-+set(MAPSERVER_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@")
-+
-+# Our library dependencies (contains definitions for IMPORTED targets)
-+if(NOT TARGET mapserver AND NOT MapServer_BINARY_DIR)
-+ include("${MAPSERVER_CMAKE_DIR}/mapserverTargets.cmake")
-+endif()
-+
-+# These are IMPORTED targets created by mapserverTargets.cmake
-+set(MAPSERVER_LIBRARIES mapserver)
-+set(MAPSERVER_EXECUTABLES sortshp shptree shptreevis msencrypt legend scalebar tile4ms shptreetst shp2img mapserv)
-diff --git a/mapshape.c b/mapshape.c
-index 75ab867..f1f71a5 100644
---- a/mapshape.c
-+++ b/mapshape.c
-@@ -268,6 +268,7 @@ SHPHandle msSHPOpen( const char * pszLayer, const char * pszAccess )
- psSHP->fpSHX = fopen(pszFullname, pszAccess );
- }
- if( psSHP->fpSHX == NULL ) {
-+ fclose(psSHP->fpSHP);
- msFree(pszBasename);
- msFree(pszFullname);
- msFree(psSHP);
-diff --git a/maptemplate.c b/maptemplate.c
-index 6488292..d091bdf 100644
---- a/maptemplate.c
-+++ b/maptemplate.c
-@@ -1951,13 +1951,11 @@ static int processShpxyTag(layerObj *layer, char **line, shapeObj *shape)
-
- double scale_x, scale_y;
-
--
- char *projectionString=NULL;
-
- shapeObj tShape;
- char *coords=NULL, point[128];
-
--
- if(!*line) {
- msSetError(MS_WEBERR, "Invalid line pointer.", "processShpxyTag()");
- return(MS_FAILURE);
-@@ -2059,7 +2057,6 @@ static int processShpxyTag(layerObj *layer, char **line, shapeObj *shape)
- if(argValue)
- if(strcasecmp(argValue,"true") == 0) centroid = MS_TRUE;
-
--
- argValue = msLookupHashTable(tagArgs, "proj");
- if(argValue) projectionString = argValue;
- }
-@@ -2121,9 +2118,7 @@ static int processShpxyTag(layerObj *layer, char **line, shapeObj *shape)
-
- switch(tShape.type) {
- case(MS_SHAPE_POINT):
-- /* at this point we only convert the first point of the first shape */
-- tShape.line[0].point[0].x = MS_MAP2IMAGE_X(tShape.line[0].point[0].x, layer->map->extent.minx, layer->map->cellsize);
-- tShape.line[0].point[0].y = MS_MAP2IMAGE_Y(tShape.line[0].point[0].y, layer->map->extent.maxy, layer->map->cellsize);
-+ /* no clipping necessary */
- break;
- case(MS_SHAPE_LINE):
- msClipPolylineRect(&tShape, layer->map->extent);
-diff --git a/mapuvraster.c b/mapuvraster.c
-index 6cbfd33..52d92a5 100644
---- a/mapuvraster.c
-+++ b/mapuvraster.c
-@@ -91,6 +91,7 @@ static int msUVRASTERLayerInitItemInfo(layerObj *layer)
- uvRasterLayerInfo *uvlinfo = (uvRasterLayerInfo *) layer->layerinfo;
- int i;
- int *itemindexes;
-+ int failed=0;
-
- if (layer->numitems == 0)
- return MS_SUCCESS;
-@@ -115,7 +116,7 @@ static int msUVRASTERLayerInitItemInfo(layerObj *layer)
- /* OGR style strings. We use special attribute snames. */
- if (EQUAL(layer->items[i], MSUVRASTER_ANGLE))
- itemindexes[i] = MSUVRASTER_ANGLEINDEX;
-- if (EQUAL(layer->items[i], MSUVRASTER_MINUS_ANGLE))
-+ else if (EQUAL(layer->items[i], MSUVRASTER_MINUS_ANGLE))
- itemindexes[i] = MSUVRASTER_MINUSANGLEINDEX;
- else if (EQUAL(layer->items[i], MSUVRASTER_LENGTH))
- itemindexes[i] = MSUVRASTER_LENGTHINDEX;
-@@ -125,17 +126,17 @@ static int msUVRASTERLayerInitItemInfo(layerObj *layer)
- itemindexes[i] = MSUVRASTER_UINDEX;
- else if (EQUAL(layer->items[i], MSUVRASTER_V))
- itemindexes[i] = MSUVRASTER_VINDEX;
--
-- if(itemindexes[i] == -1) {
-+ else {
-+ itemindexes[i] = -1;
- msSetError(MS_OGRERR,
- "Invalid Field name: %s",
- "msUVRASTERLayerInitItemInfo()",
- layer->items[i]);
-- return(MS_FAILURE);
-+ failed=1;
- }
- }
-
-- return(MS_SUCCESS);
-+ return failed ? (MS_FAILURE) : (MS_SUCCESS);
- }
-
-
-@@ -234,7 +235,7 @@ int msUVRASTERLayerClose(layerObj *layer)
- if( uvlinfo != NULL ) {
- uvlinfo->refcount--;
-
-- if( uvlinfo->refcount < 0 )
-+ if( uvlinfo->refcount < 1 )
- msUVRasterLayerInfoFree( layer );
- }
- return MS_SUCCESS;
-@@ -278,9 +279,11 @@ static char **msUVRASTERGetValues(layerObj *layer, float *u, float *v)
- if(layer->numitems == 0)
- return(NULL);
-
-- if(!layer->iteminfo) /* Should not happen... but just in case! */
-+ if(!layer->iteminfo) { /* Should not happen... but just in case! */
- if (msUVRASTERLayerInitItemInfo(layer) != MS_SUCCESS)
- return NULL;
-+ itemindexes = (int*)layer->iteminfo; /* reassign after malloc */
-+ }
-
- if((values = (char **)malloc(sizeof(char *)*layer->numitems)) == NULL) {
- msSetError(MS_MEMERR, NULL, "msUVRASTERGetValues()");
-@@ -323,7 +326,9 @@ static char **msUVRASTERGetValues(layerObj *layer, float *u, float *v)
- } else if (itemindexes[i] == MSUVRASTER_VINDEX) {
- snprintf(tmp, 100, "%f",*v);
- values[i] = msStrdup(tmp);
-- }
-+ } else {
-+ values[i] = NULL;
-+ }
- }
-
- return values;
-@@ -456,6 +461,13 @@ int msUVRASTERLayerWhichShapes(layerObj *layer, rectObj rect, int isQuery)
- if (msDrawRasterLayerLow(map_tmp, layer, image_tmp, NULL ) == MS_FAILURE) {
- msSetError(MS_MISCERR, "Unable to draw raster data.", "msUVRASTERLayerWhichShapes()");
- layer->mask = saved_layer_mask;
-+
-+ if (alteredProcessing != NULL) {
-+ layer->processing = savedProcessing;
-+ CSLDestroy(alteredProcessing);
-+ }
-+ msFreeMap(map_tmp);
-+ msFreeImage(image_tmp);
- return MS_FAILURE;
- }
-
-@@ -477,7 +489,7 @@ int msUVRASTERLayerWhichShapes(layerObj *layer, rectObj rect, int isQuery)
- }
-
- if (uvlinfo->v) {
-- for (i=0; i<uvlinfo->height; ++i) {
-+ for (i=0; i<uvlinfo->width; ++i) {
- free(uvlinfo->v[i]);
- }
- free(uvlinfo->v);
-diff --git a/mapv8.cpp b/mapv8.cpp
-index c3b5244..01b5d9a 100644
---- a/mapv8.cpp
-+++ b/mapv8.cpp
-@@ -92,6 +92,8 @@ static Handle<Value> msV8ReadFile(V8Context *v8context, const char *path)
- for (int i = 0; i < size;) {
- int read = static_cast<int>(fread(&chars[i], 1, size - i, file));
- if (read == 0) {
-+ delete [] chars;
-+ fclose(file);
- msDebug("msV8ReadFile: error while reading file '%s'\n", path);
- return Undefined();
- }
-diff --git a/mapwcs20.c b/mapwcs20.c
-index ac2fb89..2c1e3ca 100644
---- a/mapwcs20.c
-+++ b/mapwcs20.c
-@@ -3982,10 +3982,10 @@ static int msWCSSetFormatParams20(outputFormatObj* format, char** format_options
- else if (EQUAL(key, "geotiff:tiling") && is_geotiff) {
- /* TILED=YES */
- if (EQUAL(value, "true")) {
-- msSetOutputFormatOption(format, "TILING", "YES");
-+ msSetOutputFormatOption(format, "TILED", "YES");
- }
- else if (EQUAL(value, "false")) {
-- msSetOutputFormatOption(format, "TILING", "NO");
-+ msSetOutputFormatOption(format, "TILED", "NO");
- }
- else {
- msSetError(MS_WCSERR, "Invalid boolean value '%s'.",
-diff --git a/mapwms.c b/mapwms.c
-index 578c71e..96389d0 100644
---- a/mapwms.c
-+++ b/mapwms.c
-@@ -333,7 +333,7 @@ void msWMSPrepareNestedGroups(mapObj* map, int nVersion, char*** nestedGroups, i
- //Create array to hold unique groups
- int maxgroups = 2000;
- int maxgroupiter = 1;
-- char** uniqgroups = malloc(maxgroups * sizeof(char*));
-+ char** uniqgroups = msSmallMalloc(maxgroups * sizeof(char*));
- int uniqgroupcount = 0;
-
-
-@@ -391,6 +391,9 @@ void msWMSPrepareNestedGroups(mapObj* map, int nVersion, char*** nestedGroups, i
- }
- }
- }
-+
-+ /* free uniqgroups */
-+ free(uniqgroups);
- }
-
-
-diff --git a/scalebar.c b/scalebar.c
-index 8c7167b..67ba5f4 100644
---- a/scalebar.c
-+++ b/scalebar.c
-@@ -36,6 +36,7 @@ int main(int argc, char *argv[])
- mapObj *map=NULL;
- imageObj *image = NULL;
-
-+ msSetup();
- if(argc > 1 && strcmp(argv[1], "-v") == 0) {
- printf("%s\n", msGetVersion());
- exit(0);
-diff --git a/xmlmapfile/mapfile.xsd b/xmlmapfile/mapfile.xsd
-index 2d778bc..07f73e7 100644
---- a/xmlmapfile/mapfile.xsd
-+++ b/xmlmapfile/mapfile.xsd
-@@ -346,9 +346,9 @@
- </xs:simpleType>
- </xs:union>
- </xs:simpleType>
-- <xs:element name="maxScaleDenom" type="xs:double" minOccurs="0"/>
-- <xs:element name="minScaleDenom" type="xs:double" minOccurs="0"/>
- </xs:element>
-+ <xs:element name="maxScaleDenom" type="xs:double" minOccurs="0"/>
-+ <xs:element name="minScaleDenom" type="xs:double" minOccurs="0"/>
- <xs:element name="Style" type="ms:Style" minOccurs="0" maxOccurs="unbounded"/>
- <xs:element name="text" type="xs:string" minOccurs="0"/>
- <xs:element name="wrap" type="xs:string" minOccurs="0"/>
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/mapserver.git/commitdiff/f21219c277bf433bd7a84e75bddb7346685f8636
More information about the pld-cvs-commit
mailing list