[geos] 03/07: Imported Upstream version 3.5.1

Bas Couwenberg sebastic at debian.org
Tue Oct 25 20:33:54 UTC 2016


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch experimental-3.5
in repository geos.

commit bb6e394c3972d3b1894d1b71d04bcdc01d58b0ca
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Tue Oct 25 22:16:42 2016 +0200

    Imported Upstream version 3.5.1
---
 ._CMakeLists.txt                                   | Bin 251 -> 0 bytes
 ._NEWS                                             | Bin 250 -> 0 bytes
 ._configure.ac                                     | Bin 247 -> 0 bytes
 CMakeLists.txt                                     | 112 +++++++------
 ChangeLog                                          | 182 +++++++++++++++++++++
 Makefile.in                                        |   3 +-
 NEWS                                               |  30 +++-
 capi/._geos_c.h.in                                 | Bin 253 -> 0 bytes
 capi/Makefile.in                                   |   1 +
 capi/geos_c.h                                      |  12 +-
 capi/geos_c.h.in                                   |   4 +-
 config.guess                                       |  38 ++++-
 config.sub                                         |  26 +--
 configure                                          |  59 ++++++-
 configure.ac                                       |   6 +-
 doc/Doxyfile                                       |   2 +-
 doc/Makefile.in                                    |   1 +
 geos_svn_revision.h                                |   2 +-
 include/Makefile.in                                |   1 +
 include/geos/._version.h.vc                        | Bin 210 -> 0 bytes
 include/geos/Makefile.in                           |   1 +
 include/geos/algorithm/Makefile.in                 |   1 +
 include/geos/algorithm/PointLocator.h              |   3 +
 include/geos/algorithm/distance/Makefile.in        |   1 +
 include/geos/algorithm/locate/Makefile.in          |   1 +
 include/geos/geom/Makefile.in                      |   1 +
 include/geos/geom/prep/Makefile.in                 |   1 +
 include/geos/geom/util/Makefile.in                 |   1 +
 include/geos/geomgraph/GeometryGraph.h             |  13 ++
 include/geos/geomgraph/Makefile.in                 |   1 +
 include/geos/geomgraph/index/Makefile.in           |   1 +
 include/geos/geomgraph/index/SegmentIntersector.h  |  10 ++
 .../geomgraph/index/SimpleMCSweepLineIntersector.h |   3 +-
 include/geos/index/Makefile.in                     |   1 +
 include/geos/index/bintree/Makefile.in             |   1 +
 include/geos/index/chain/Makefile.in               |   1 +
 include/geos/index/intervalrtree/Makefile.in       |   1 +
 include/geos/index/quadtree/Makefile.in            |   1 +
 include/geos/index/strtree/Makefile.in             |   1 +
 include/geos/index/sweepline/Makefile.in           |   1 +
 include/geos/io/Makefile.in                        |   1 +
 include/geos/linearref/Makefile.in                 |   1 +
 include/geos/noding/Makefile.in                    |   1 +
 include/geos/noding/snapround/Makefile.in          |   1 +
 include/geos/operation/Makefile.in                 |   1 +
 include/geos/operation/buffer/Makefile.in          |   1 +
 include/geos/operation/distance/Makefile.in        |   1 +
 include/geos/operation/intersection/Makefile.in    |   1 +
 include/geos/operation/linemerge/Makefile.in       |   1 +
 include/geos/operation/overlay/Makefile.in         |   1 +
 include/geos/operation/overlay/snap/Makefile.in    |   1 +
 include/geos/operation/polygonize/Makefile.in      |   1 +
 include/geos/operation/predicate/Makefile.in       |   1 +
 include/geos/operation/relate/Makefile.in          |   1 +
 include/geos/operation/sharedpaths/Makefile.in     |   1 +
 include/geos/operation/union/Makefile.in           |   1 +
 include/geos/operation/valid/Makefile.in           |   1 +
 include/geos/planargraph/Makefile.in               |   1 +
 include/geos/planargraph/algorithm/Makefile.in     |   1 +
 include/geos/platform.h.cmake                      |   6 +
 include/geos/platform.h.in                         |   2 +-
 include/geos/precision/Makefile.in                 |   1 +
 include/geos/simplify/Makefile.in                  |   1 +
 include/geos/triangulate/Makefile.in               |   1 +
 include/geos/triangulate/quadedge/Makefile.in      |   1 +
 .../triangulate/quadedge/QuadEdgeSubdivision.h     |   2 +-
 include/geos/util/Makefile.in                      |   1 +
 include/geos/version.h.vc                          |   4 +-
 install-sh                                         |  23 ++-
 ltmain.sh                                          |  37 +++--
 macros/._libtool.m4                                | Bin 239 -> 0 bytes
 macros/._ltoptions.m4                              | Bin 239 -> 0 bytes
 macros/._ltsugar.m4                                | Bin 239 -> 0 bytes
 macros/._lt~obsolete.m4                            | Bin 239 -> 0 bytes
 macros/Makefile.in                                 |   1 +
 macros/libtool.m4                                  |  27 ++-
 nmake.opt                                          |   3 +
 php/Makefile.in                                    |   1 +
 php/test/Makefile.in                               |   1 +
 src/Makefile.in                                    |   1 +
 src/algorithm/Makefile.in                          |   1 +
 src/algorithm/PointLocator.cpp                     |  19 ++-
 src/algorithm/distance/Makefile.in                 |   1 +
 src/algorithm/locate/Makefile.in                   |   1 +
 src/geom/Makefile.in                               |   1 +
 src/geom/prep/Makefile.in                          |   1 +
 src/geom/prep/PreparedPoint.cpp                    |   5 -
 src/geom/util/GeometryEditor.cpp                   |   7 +
 src/geom/util/Makefile.in                          |   1 +
 src/geomgraph/GeometryGraph.cpp                    |  30 ++--
 src/geomgraph/Makefile.in                          |   1 +
 src/geomgraph/PlanarGraph.cpp                      |  22 +--
 src/geomgraph/index/Makefile.in                    |   1 +
 src/geomgraph/index/SegmentIntersector.cpp         |  16 ++
 .../index/SimpleMCSweepLineIntersector.cpp         |   4 +
 src/index/Makefile.in                              |   1 +
 src/index/bintree/Makefile.in                      |   1 +
 src/index/chain/Makefile.in                        |   1 +
 src/index/intervalrtree/Makefile.in                |   1 +
 src/index/quadtree/Makefile.in                     |   1 +
 src/index/strtree/Makefile.in                      |   1 +
 src/index/sweepline/Makefile.in                    |   1 +
 src/io/Makefile.in                                 |   1 +
 src/io/StringTokenizer.cpp                         |   1 +
 src/linearref/Makefile.in                          |   1 +
 src/noding/Makefile.in                             |   1 +
 src/noding/snapround/Makefile.in                   |   1 +
 src/operation/Makefile.in                          |   1 +
 src/operation/buffer/BufferBuilder.cpp             |  22 +--
 src/operation/buffer/Makefile.in                   |   1 +
 src/operation/distance/Makefile.in                 |   1 +
 src/operation/intersection/Makefile.in             |   1 +
 src/operation/linemerge/Makefile.in                |   1 +
 src/operation/overlay/Makefile.in                  |   1 +
 src/operation/overlay/snap/LineStringSnapper.cpp   |  13 +-
 src/operation/polygonize/Makefile.in               |   1 +
 src/operation/predicate/Makefile.in                |   1 +
 src/operation/relate/Makefile.in                   |   1 +
 src/operation/sharedpaths/Makefile.in              |   1 +
 src/operation/union/Makefile.in                    |   1 +
 src/operation/valid/ConsistentAreaTester.cpp       |   5 +-
 src/operation/valid/IsValidOp.cpp                  |   2 +-
 src/operation/valid/Makefile.in                    |   1 +
 src/planargraph/Makefile.in                        |   1 +
 src/precision/Makefile.in                          |   1 +
 src/simplify/Makefile.in                           |   1 +
 src/triangulate/Makefile.in                        |   1 +
 src/triangulate/quadedge/Makefile.in               |   1 +
 src/triangulate/quadedge/QuadEdgeSubdivision.cpp   |   5 +-
 src/util/Makefile.in                               |   1 +
 swig/Makefile.in                                   |   1 +
 swig/geos.i                                        |   8 +-
 swig/python/Makefile.in                            |   1 +
 swig/python/tests/Makefile.in                      |   1 +
 swig/ruby/Makefile.in                              |   1 +
 swig/ruby/test/Makefile.in                         |   1 +
 tests/Makefile.in                                  |   1 +
 tests/bigtest/Makefile.in                          |   1 +
 tests/geostest/Makefile.in                         |   1 +
 tests/perf/Makefile.in                             |   1 +
 tests/perf/capi/Makefile.in                        |   1 +
 tests/perf/operation/Makefile.in                   |   1 +
 tests/perf/operation/buffer/Makefile.in            |   1 +
 tests/perf/operation/predicate/Makefile.in         |   1 +
 tests/thread/Makefile.in                           |   1 +
 tests/unit/Makefile.in                             |   1 +
 tests/unit/algorithm/PointLocatorTest.cpp          |   9 +-
 .../overlay/snap/LineStringSnapperTest.cpp         |  47 +++++-
 tests/unit/triangulate/DelaunayTest.cpp            |   6 +-
 tests/xmltester/CMakeLists.txt                     |   8 +-
 tests/xmltester/Makefile.in                        |   1 +
 tools/Makefile.in                                  |   1 +
 152 files changed, 750 insertions(+), 189 deletions(-)

diff --git a/._CMakeLists.txt b/._CMakeLists.txt
deleted file mode 100644
index 579e6c1..0000000
Binary files a/._CMakeLists.txt and /dev/null differ
diff --git a/._NEWS b/._NEWS
deleted file mode 100644
index bb4df01..0000000
Binary files a/._NEWS and /dev/null differ
diff --git a/._configure.ac b/._configure.ac
deleted file mode 100644
index fa447a3..0000000
Binary files a/._configure.ac and /dev/null differ
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 786f0df..0bbc15f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -10,7 +10,7 @@
 # See the COPYING file for more information.
 #
 #################################################################################
-project(geos)
+project(GEOS)
 cmake_minimum_required(VERSION 2.6)
 
 if(NOT CMAKE_VERSION)
@@ -19,7 +19,7 @@ if(NOT CMAKE_VERSION)
 endif()
 
 # Location of custom CMake modules with macros used by GEOS
-set(CMAKE_MODULE_PATH "${geos_SOURCE_DIR}/cmake/modules")
+set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/modules")
 
 #################################################################################
 # Setup GEOS version
@@ -29,7 +29,7 @@ set(CMAKE_MODULE_PATH "${geos_SOURCE_DIR}/cmake/modules")
 # GEOS C++ library SONAME will use these encoding ABI break at every release
 set(VERSION_MAJOR 3)
 set(VERSION_MINOR 5)
-set(VERSION_PATCH 0)
+set(VERSION_PATCH 1)
 set(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
 
 # JTS_PORT is the version of JTS this release is bound to
@@ -38,7 +38,7 @@ message(STATUS "Setting GEOS version ${VERSION} as port of JTS ${JTS_PORT}")
 
 # GEOS C API version
 set(CAPI_INTERFACE_CURRENT 10)
-set(CAPI_INTERFACE_REVISION 0)
+set(CAPI_INTERFACE_REVISION 1)
 set(CAPI_INTERFACE_AGE 9)
 
 math(EXPR CAPI_VERSION_MAJOR "${CAPI_INTERFACE_CURRENT} - ${CAPI_INTERFACE_AGE}")
@@ -63,7 +63,7 @@ option(GEOS_ENABLE_INLINE
 
 if(NOT MSVC)
   option(GEOS_ENABLE_ASSERT
-    "Set to ON|OFF (default) to build GEOS with assert() macro enabled" OFF) 
+    "Set to ON|OFF (default) to build GEOS with assert() macro enabled" OFF)
 endif()
 
 if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
@@ -117,12 +117,12 @@ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
   set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_ISOC99_SOURCE=1")
 
 elseif(MSVC)
-    
+
   # Set pedantic mode by default
   #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
   string(REGEX REPLACE "/W[0-9]" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
 
-  if(MSVC80 OR MSVC90 OR MSVC10 OR MSVC11 OR MSVC12 OR MSVC13)
+  if(NOT (MSVC_VERSION LESS 1400)) # Visual Studio 2005 or later
 
     # Option is to enable the /MP switch for Visual Studio 2005 or later
     option(GEOS_MSVC_ENABLE_MP
@@ -132,7 +132,7 @@ elseif(MSVC)
       set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
     endif()
     message(STATUS "Setting Visual Studio 2005+ option /MP to ${GEOS_MSVC_ENABLE_MP}")
-    
+
     add_definitions(-D_SCL_SECURE_NO_WARNINGS)
     add_definitions(-D_CRT_SECURE_NO_WARNINGS)
     add_definitions(-DNOMINMAX)
@@ -225,13 +225,13 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
 #################################################################################
 
 # for including GEOS C++ API headers
-include_directories(${geos_SOURCE_DIR}/include)
+include_directories(${PROJECT_SOURCE_DIR}/include)
 
 # for including build-specific GEOS C API headers
-include_directories(${geos_BINARY_DIR}/capi)
+include_directories(${PROJECT_BINARY_DIR}/capi)
 
 # for including build-specific version.h, platform.h and geos_c.h
-include_directories(${geos_BINARY_DIR}/include)
+include_directories(${PROJECT_BINARY_DIR}/include)
 
 #################################################################################
 # Setup checks and generate config headers
@@ -239,7 +239,7 @@ include_directories(${geos_BINARY_DIR}/include)
 
 #################################################################################
 #  MACRO: GET_SVN_REVISION
-#  
+#
 #  DESCRIPTION:
 #      MACRO FOR GETTING THE SVN revision for this build
 #################################################################################
@@ -254,70 +254,74 @@ MACRO (GET_SVN_REVISION)
 ENDMACRO(GET_SVN_REVISION)
 
 # Determine SVN/Git revision
-if(EXISTS "${CMAKE_SOURCE_DIR}/.svn")
+set(GEOS_BUILD_PACKAGED TRUE)
+if(EXISTS "${PROJECT_SOURCE_DIR}/.svn")
+  set(GEOS_BUILD_PACKAGED FALSE)
   GET_SVN_REVISION()
+elseif(EXISTS "${PROJECT_SOURCE_DIR}/.git")
+  set(GEOS_BUILD_PACKAGED FALSE)
 endif()
-if ( NOT ${Project_WC_REVISION} EQUAL 0 )
-   set( GEOS_SVN_REVISION ${Project_WC_REVISION} )
-   configure_file ( 
-      "${PROJECT_SOURCE_DIR}/tools/geos_svn_revision_cmake.h.in"
-      "${PROJECT_SOURCE_DIR}/geos_svn_revision.h" )
-      # "${geos_BINARY_DIR}/include/geos_svn_revision.h" )
-else()
-   message(STATUS "Generating revision header ${CMAKE_SOURCE_DIR}/geos_svn_revision.h")
-   find_program(SH sh)
-   if(SH)
-      execute_process(COMMAND ${SH} -c 
-      "cd ${CMAKE_SOURCE_DIR} && ${CMAKE_SOURCE_DIR}/tools/svn_repo_revision.sh")
-
-      file(RENAME "${CMAKE_SOURCE_DIR}/geos_svn_revision.h"
-      "${CMAKE_BINARY_DIR}/geos_svn_revision.h")
-   else()
-      message("*** sh-compatible command not found, cannot create geos_svn_revision.h")
-      message("*** Check SVN revision and create revision header manually:")
-      message("*** echo '#define GEOS_SVN_REVISION XYZ' > ${CMAKE_SOURCE_DIR}/geos_svn_revision.h")
-   endif()
+
+if (NOT GEOS_BUILD_PACKAGED)
+  message(STATUS "Generating GEOS revision header in ${PROJECT_BINARY_DIR}/geos_svn_revision.h")
+  if ( NOT ${Project_WC_REVISION} EQUAL 0 )
+     set( GEOS_SVN_REVISION ${Project_WC_REVISION} )
+     configure_file (
+        "${PROJECT_SOURCE_DIR}/tools/geos_svn_revision_cmake.h.in"
+        "${PROJECT_BINARY_DIR}/geos_svn_revision.h" )
+  else()
+     find_program(SH sh)
+     if(SH)
+        execute_process(COMMAND ${SH} -c
+        "cd ${PROJECT_SOURCE_DIR} && ${PROJECT_SOURCE_DIR}/tools/svn_repo_revision.sh")
+
+        file(RENAME "${PROJECT_SOURCE_DIR}/geos_svn_revision.h"
+        "${PROJECT_BINARY_DIR}/geos_svn_revision.h")
+     else()
+        message("*** sh-compatible command not found, cannot create geos_svn_revision.h")
+        message("*** Check SVN revision and create revision header manually:")
+        message("*** echo '#define GEOS_SVN_REVISION XYZ' > ${PROJECT_SOURCE_DIR}/geos_svn_revision.h")
+     endif()
+  endif()
 endif()
 # End: Determine SVN/Git revision
 
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/include/geos/platform.h)
-  message(STATUS "Disabling existing ${CMAKE_CURRENT_SOURCE_DIR}/include/geos/platform.h")
+if(EXISTS ${PROJECT_SOURCE_DIR}/include/geos/platform.h)
+  message(STATUS "Disabling existing ${PROJECT_SOURCE_DIR}/include/geos/platform.h")
 
   if(${CMAKE_MAJOR_VERSION} EQUAL 2 AND ${CMAKE_MINOR_VERSION} EQUAL 6)
-    file(REMOVE ${CMAKE_CURRENT_SOURCE_DIR}/include/geos/platform.h)
+    file(REMOVE ${PROJECT_SOURCE_DIR}/include/geos/platform.h)
     set(PH_RESULT "removed")
   else()
     file(RENAME
-      ${CMAKE_CURRENT_SOURCE_DIR}/include/geos/platform.h
-      ${CMAKE_CURRENT_SOURCE_DIR}/include/geos/platform.h.disabled)
+      ${PROJECT_SOURCE_DIR}/include/geos/platform.h
+      ${PROJECT_SOURCE_DIR}/include/geos/platform.h.disabled)
       set(PH_RESULT "renamed")
   endif()
 
-  message(STATUS "Disabling existing ${CMAKE_CURRENT_SOURCE_DIR}/include/geos/platform.h - ${PH_RESULT}")
+  message(STATUS "Disabling existing ${PROJECT_SOURCE_DIR}/include/geos/platform.h - ${PH_RESULT}")
 endif()
 
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/geos/platform.h.cmake 
-  ${CMAKE_CURRENT_BINARY_DIR}/include/geos/platform.h)
+message(STATUS "Generating GEOS ${PROJECT_BINARY_DIR}/include/geos/platform.h")
+configure_file(${PROJECT_SOURCE_DIR}/include/geos/platform.h.cmake
+  ${PROJECT_BINARY_DIR}/include/geos/platform.h)
 
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/geos/version.h.in
-  ${CMAKE_CURRENT_BINARY_DIR}/include/geos/version.h @ONLY)
+message(STATUS "Generating GEOS ${PROJECT_BINARY_DIR}/include/geos/version.h")
+configure_file(${PROJECT_SOURCE_DIR}/include/geos/version.h.in
+  ${PROJECT_BINARY_DIR}/include/geos/version.h @ONLY)
 
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/capi/geos_c.h.in
-  ${CMAKE_CURRENT_BINARY_DIR}/capi/geos_c.h @ONLY)
+message(STATUS "Generating GEOS ${PROJECT_BINARY_DIR}/capi/geos_c.h")
+configure_file(${PROJECT_SOURCE_DIR}/capi/geos_c.h.in
+  ${PROJECT_BINARY_DIR}/capi/geos_c.h @ONLY)
 
 #################################################################################
 # Configure tests
 #################################################################################
 
 if(GEOS_ENABLE_TESTS)
-
- # Include CTest support
- include(CTest)
- enable_testing()
-
+  enable_testing()
   # Define "make check" as alias for "make test"
   add_custom_target(check COMMAND ctest)
-
 endif()
 
 #################################################################################
@@ -335,12 +339,12 @@ add_subdirectory(tools)
 # Install/Uninstall
 #################################################################################
 
-configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
-  "${CMAKE_CURRENT_BINARY_DIR}/cmake/cmake_uninstall.cmake"
+configure_file("${PROJECT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
+  "${PROJECT_BINARY_DIR}/cmake/cmake_uninstall.cmake"
   IMMEDIATE @ONLY)
 
 add_custom_target(uninstall
-  "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake/cmake_uninstall.cmake") 
+  "${CMAKE_COMMAND}" -P "${PROJECT_BINARY_DIR}/cmake/cmake_uninstall.cmake")
 
 #################################################################################
 # DEBUG settings - TODO: make a summary
diff --git a/ChangeLog b/ChangeLog
index bf8607b..247736e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,185 @@
+2016-08-03 19:28  Mateusz Loskot <mateusz at loskot.net>
+
+	* [r4246] ., nmake.opt: Merged revision(s) 4244 from trunk:
+	  Add NMAKE version from VS2015 Update 3
+
+2016-07-15 16:38  Sandro Santilli <strk at keybit.net>
+
+	* [r4232] .drone.yml: Add a "make check" step to the drone config
+
+2016-07-14 11:06  Sandro Santilli <strk at keybit.net>
+
+	* [r4225] NEWS, configure.ac, include/geos/platform.h.in: Look for
+	  isnan in std:: namespace
+	  
+	  Fully qualify isnan call when HAVE_ISNAN is defined
+	  Tested with gcc 4.8.4
+	  
+	  Fixes build with GCC-5.3.0 and higher.
+	  Closes #784
+
+2016-07-12 17:48  Sandro Santilli <strk at keybit.net>
+
+	* [r4223] README.md: Use https for travis badge
+
+2016-07-12 17:47  Sandro Santilli <strk at keybit.net>
+
+	* [r4222] .drone.yml: Add .drone.yml
+
+2016-06-07 09:27  Mateusz Loskot <mateusz at loskot.net>
+
+	* [r4210] CMakeLists.txt, tests/xmltester/CMakeLists.txt: Update
+	  CMake configuration based on trunk/CMakeLists.txt
+
+2016-05-12 09:36  Sandro Santilli <strk at keybit.net>
+
+	* [r4206] README.md: Add debbie and winnie build badges
+
+2016-04-22 16:19  Sandro Santilli <strk at keybit.net>
+
+	* [r4192] .gitlab-ci.yml, README.md: Add gitlab-ci config and badge
+
+2016-03-07 10:23  Sandro Santilli <strk at keybit.net>
+
+	* [r4171] .travis.yml: Report build activity in #postgis-activity
+	  (not #postgis)
+	  
+	  Also do not use notices
+
+2016-02-24 11:50  Sandro Santilli <strk at keybit.net>
+
+	* [r4150] NEWS, include/geos/algorithm/PointLocator.h,
+	  src/algorithm/PointLocator.cpp, src/geom/prep/PreparedPoint.cpp,
+	  tests/unit/algorithm/PointLocatorTest.cpp: Fix incorrect return
+	  from PreparedPoint::intersects
+	  
+	  Includes unit test
+	  
+	  Patch by Daniel Baston via
+	  https://github.com/libgeos/libgeos/pull/60
+	  
+	  See #764 (for 3.5 branch)
+	  Reverts r4081
+
+2016-02-05 08:00  Sandro Santilli <strk at keybit.net>
+
+	* [r4143] NEWS, src/io/StringTokenizer.cpp: Include <limits> in
+	  StringTokenizer
+	  
+	  Patch by Jeff Mckenna
+	  Closes #766
+
+2016-01-20 00:02  Paul Ramsey <pramsey at cleverelephant.ca>
+
+	* [r4140] NEWS, include/geos/geomgraph/GeometryGraph.h,
+	  include/geos/geomgraph/index/SegmentIntersector.h,
+	  include/geos/geomgraph/index/SimpleMCSweepLineIntersector.h,
+	  src/geomgraph/GeometryGraph.cpp,
+	  src/geomgraph/index/SegmentIntersector.cpp,
+	  src/geomgraph/index/SimpleMCSweepLineIntersector.cpp,
+	  src/operation/valid/ConsistentAreaTester.cpp,
+	  src/operation/valid/IsValidOp.cpp: #757, fix memory exhaustion
+	  case in isvalid
+
+2015-12-31 08:25  Sandro Santilli <strk at keybit.net>
+
+	* [r4139] NEWS: Add missing 3.3.9 section
+
+2015-12-14 17:20  Sandro Santilli <strk at keybit.net>
+
+	* [r4131] NEWS, src/operation/overlay/snap/LineStringSnapper.cpp,
+	  tests/unit/operation/overlay/snap/LineStringSnapperTest.cpp: Fix
+	  snapping of last segment in a closed linestring
+	  
+	  See #758
+
+2015-12-14 17:20  Sandro Santilli <strk at keybit.net>
+
+	* [r4130]
+	  tests/unit/operation/overlay/snap/LineStringSnapperTest.cpp:
+	  Enable a commented-out test (works)
+
+2015-11-21 16:01  Sandro Santilli <strk at keybit.net>
+
+	* [r4120] include/geos/triangulate/quadedge/QuadEdgeSubdivision.h,
+	  src/triangulate/quadedge/QuadEdgeSubdivision.cpp: use std::vector
+	  instead of std::list to avoid size() bottleneck
+	  
+	  Patch by Daniel Baston via
+	  https://github.com/libgeos/libgeos/pull/55
+
+2015-11-04 20:41  Mateusz Loskot <mateusz at loskot.net>
+
+	* [r4116] NEWS: Add #753 fix
+
+2015-11-04 20:37  Mateusz Loskot <mateusz at loskot.net>
+
+	* [r4115] ., CMakeLists.txt, include/geos/platform.h.cmake: Merged
+	  revision(s) 4112,4114 from trunk:
+	  Add #define NOMINMAX for Visual C++
+	  ........
+	  CMake should not try to generate geos_svn_revision.h if GEOS is
+	  built from packaged sources.
+	  Fixes #753
+
+2015-10-13 11:43  Sandro Santilli <strk at keybit.net>
+
+	* [r4110] NEWS, src/geom/util/GeometryEditor.cpp: Fix
+	  GeometryEditor to correctly update factory of empty geometries
+	  
+	  Closes #749
+
+2015-10-05 12:55  Mateusz Loskot <mateusz at loskot.net>
+
+	* [r4107] NEWS: Revert accidental removal of whitespaces in r4106.
+
+2015-10-05 09:45  Mateusz Loskot <mateusz at loskot.net>
+
+	* [r4106] NEWS: Update NEWS item about memory leaks fixes
+
+2015-10-05 09:44  Mateusz Loskot <mateusz at loskot.net>
+
+	* [r4105] ., src/geomgraph/PlanarGraph.cpp,
+	  tests/unit/triangulate/DelaunayTest.cpp: Merged revision(s)
+	  4099-4100, 4104 from trunk:
+	  Fix memory leaks (two) due to misuse of CoordinateArraySequence
+	  ........
+	  Make adding edges a bit more exception safe and helps to avoid
+	  memory leaks when PlanarGraph::add(de1) throws, leaving de2
+	  behind.
+	  This also fixes memory leak in case of self-union with NaN
+	  coordinates, revealed by GEOSUnaryUnionTest/test<9>.
+	  ........
+	  Use std::auto_ptr to simplify r4100 fix of a memory leak
+	  potential
+	  ........
+
+2015-10-04 16:09  Sandro Santilli <strk at keybit.net>
+
+	* [r4102] NEWS: Add NEWS item about memory leaks fixes
+
+2015-10-04 16:08  Sandro Santilli <strk at keybit.net>
+
+	* [r4101] src/operation/buffer/BufferBuilder.cpp: Fix a few
+	  potential (one confirmed) leak in single sided buffer
+	  
+	  See #747
+
+2015-08-16 22:29  Paul Ramsey <pramsey at cleverelephant.ca>
+
+	* [r4088] NEWS: Add 3.5.1 entry to NEWS
+
+2015-08-16 22:28  Paul Ramsey <pramsey at cleverelephant.ca>
+
+	* [r4087] CMakeLists.txt, HOWTO_RELEASE, capi/geos_c.h.in,
+	  configure.ac, include/geos/version.h.vc: Bump branch versions for
+	  3.5.1
+
+2015-08-14 18:34  Paul Ramsey <pramsey at cleverelephant.ca>
+
+	* [r4084] CMakeLists.txt, ChangeLog, HOWTO_RELEASE, NEWS,
+	  configure.ac: Ready to tag'n'bag 3.5.0
+
 2015-08-14 18:22  Paul Ramsey <pramsey at cleverelephant.ca>
 
 	* [r4083] .: Branch for release
diff --git a/Makefile.in b/Makefile.in
index 8c91567..d7b8128 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -168,7 +168,7 @@ CSCOPE = cscope
 DIST_SUBDIRS = $(SUBDIRS)
 am__DIST_COMMON = $(srcdir)/Makefile.in AUTHORS COPYING ChangeLog \
 	INSTALL NEWS README TODO compile config.guess config.sub \
-	install-sh ltmain.sh missing py-compile
+	install-sh ltmain.sh missing
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
@@ -372,6 +372,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/NEWS b/NEWS
index 893ea5e..2ad72b4 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,16 @@
+Changes in 3.5.1
+2015-10-25
+
+- Bug fixes / improvements
+  - Fix CMake configuration to allow build from released sources package (#753)
+  - Fix memory leaks in single-sided buffers (#747), PlanarGraph and tests
+  - Fix GeometryEditor to correctly update factory of empty geometries (#749)
+  - Fix snapping of last segment of a closed linestring (#758)
+  - Fix memory exhaustion case in isvalid (#757)
+  - Fix Windows build with Visual Studio 2008 (#766)
+  - Fix incorrect return from prepared multipoint intersects (#764)
+  - Fix build against GCC 3.5.0+ (#784)
+
 Changes in 3.5.0
 2015-08-15
 
@@ -82,6 +95,22 @@ Changes in 3.4.0
   - CMakeLists.txt, tools/geos_svn_revision_cmake.h.in: Add
 	  geos_svn_revision.h generator to CMake config (#643)
 	- Makefile.vc 'clean' step leaks obj files (#607) 
+
+Changes in 3.3.9
+2013-09-04
+
+- Bug fixes / improvements
+    - Fix OffsetCurve op in presence of duplicated vertices (#602)
+    - Fix LineSegmentVisitor copy ctor (#636)
+    - Fix area boundary return from GEOSPointOnSurface (#623)
+    - Speedup GEOSWKBReader_read (#621)
+    - Fix RobustLineIntersector handling of invalid intersection points (#622)
+    - Reduce likelyhood of invalid output from snap operation (#629, #501)
+    - Reduce memory fragmentation of prepared Polygon/Point intersection op
+    - Fix mingw64 compile (#630)
+    - Fix bug in HotPixel constructor (#635)
+    - Fix install location of linearref headers (#624)
+    - Fix multi-geometry constructor to drop SRID from components (#583)
   
 Changes in 3.3.8
 2013-02-28
@@ -524,4 +553,3 @@ Changes in 2.0.0
   been dropped. You have to use GeometryFactory instead.
 - WKTWriter default constructor has been dropped. You need
   to initialize it with an explicit GeometryFactory
-
diff --git a/capi/._geos_c.h.in b/capi/._geos_c.h.in
deleted file mode 100644
index 311e3c9..0000000
Binary files a/capi/._geos_c.h.in and /dev/null differ
diff --git a/capi/Makefile.in b/capi/Makefile.in
index 271293e..1349b8f 100644
--- a/capi/Makefile.in
+++ b/capi/Makefile.in
@@ -378,6 +378,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/capi/geos_c.h b/capi/geos_c.h
index 9de6ea4..2b782ee 100644
--- a/capi/geos_c.h
+++ b/capi/geos_c.h
@@ -60,8 +60,8 @@ extern "C" {
 #include <geos/version.h>
 #define GEOS_CAPI_VERSION_MAJOR 1
 #define GEOS_CAPI_VERSION_MINOR 9
-#define GEOS_CAPI_VERSION_PATCH 0
-#define GEOS_CAPI_VERSION "3.5.0-CAPI-1.9.0"
+#define GEOS_CAPI_VERSION_PATCH 1
+#define GEOS_CAPI_VERSION "3.5.1-CAPI-1.9.1"
 #else
 #ifndef GEOS_VERSION_MAJOR
 #define GEOS_VERSION_MAJOR 3
@@ -70,10 +70,10 @@ extern "C" {
 #define GEOS_VERSION_MINOR 5
 #endif
 #ifndef GEOS_VERSION_PATCH
-#define GEOS_VERSION_PATCH 0
+#define GEOS_VERSION_PATCH 1
 #endif
 #ifndef GEOS_VERSION
-#define GEOS_VERSION "3.5.0"
+#define GEOS_VERSION "3.5.1"
 #endif
 #ifndef GEOS_JTS_PORT
 #define GEOS_JTS_PORT "1.13.0"
@@ -81,8 +81,8 @@ extern "C" {
 
 #define GEOS_CAPI_VERSION_MAJOR 1
 #define GEOS_CAPI_VERSION_MINOR 9
-#define GEOS_CAPI_VERSION_PATCH 0
-#define GEOS_CAPI_VERSION "3.5.0-CAPI-1.9.0"
+#define GEOS_CAPI_VERSION_PATCH 1
+#define GEOS_CAPI_VERSION "3.5.1-CAPI-1.9.1"
 #endif
 
 #define GEOS_CAPI_FIRST_INTERFACE GEOS_CAPI_VERSION_MAJOR
diff --git a/capi/geos_c.h.in b/capi/geos_c.h.in
index d66247f..f0b8298 100644
--- a/capi/geos_c.h.in
+++ b/capi/geos_c.h.in
@@ -60,8 +60,8 @@ extern "C" {
 #include <geos/version.h>
 #define GEOS_CAPI_VERSION_MAJOR 1
 #define GEOS_CAPI_VERSION_MINOR 9
-#define GEOS_CAPI_VERSION_PATCH 0
-#define GEOS_CAPI_VERSION "3.5.0-CAPI-1.9.0"
+#define GEOS_CAPI_VERSION_PATCH 1
+#define GEOS_CAPI_VERSION "3.5.1-CAPI-1.9.1"
 #else
 #ifndef GEOS_VERSION_MAJOR
 #define GEOS_VERSION_MAJOR @VERSION_MAJOR@
diff --git a/config.guess b/config.guess
index 6c32c86..1659250 100755
--- a/config.guess
+++ b/config.guess
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2014 Free Software Foundation, Inc.
+#   Copyright 1992-2015 Free Software Foundation, Inc.
 
-timestamp='2014-11-04'
+timestamp='2015-08-20'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -50,7 +50,7 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2014 Free Software Foundation, Inc.
+Copyright 1992-2015 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -168,20 +168,27 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	# Note: NetBSD doesn't particularly care about the vendor
 	# portion of the name.  We always set it to "unknown".
 	sysctl="sysctl -n hw.machine_arch"
-	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
-	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+	UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
+	    /sbin/$sysctl 2>/dev/null || \
+	    /usr/sbin/$sysctl 2>/dev/null || \
+	    echo unknown)`
 	case "${UNAME_MACHINE_ARCH}" in
 	    armeb) machine=armeb-unknown ;;
 	    arm*) machine=arm-unknown ;;
 	    sh3el) machine=shl-unknown ;;
 	    sh3eb) machine=sh-unknown ;;
 	    sh5el) machine=sh5le-unknown ;;
+	    earmv*)
+		arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
+		endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
+		machine=${arch}${endian}-unknown
+		;;
 	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
 	esac
 	# The Operating System including object format, if it has switched
 	# to ELF recently, or will in the future.
 	case "${UNAME_MACHINE_ARCH}" in
-	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+	    arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax)
 		eval $set_cc_for_build
 		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
 			| grep -q __ELF__
@@ -197,6 +204,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 		os=netbsd
 		;;
 	esac
+	# Determine ABI tags.
+	case "${UNAME_MACHINE_ARCH}" in
+	    earm*)
+		expr='s/^earmv[0-9]/-eabi/;s/eb$//'
+		abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
+		;;
+	esac
 	# The OS release
 	# Debian GNU/NetBSD machines have a different userland, and
 	# thus, need a distinct triplet. However, they do not need
@@ -207,13 +221,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 		release='-gnu'
 		;;
 	    *)
-		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+		release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2`
 		;;
 	esac
 	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
 	# contains redundant information, the shorter form:
 	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-	echo "${machine}-${os}${release}"
+	echo "${machine}-${os}${release}${abi}"
 	exit ;;
     *:Bitrig:*:*)
 	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
@@ -235,6 +249,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     *:MirBSD:*:*)
 	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
 	exit ;;
+    *:Sortix:*:*)
+	echo ${UNAME_MACHINE}-unknown-sortix
+	exit ;;
     alpha:OSF1:*:*)
 	case $UNAME_RELEASE in
 	*4.0)
@@ -933,6 +950,9 @@ EOF
     crisv32:Linux:*:*)
 	echo ${UNAME_MACHINE}-axis-linux-${LIBC}
 	exit ;;
+    e2k:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	exit ;;
     frv:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
 	exit ;;
@@ -1021,7 +1041,7 @@ EOF
 	echo ${UNAME_MACHINE}-dec-linux-${LIBC}
 	exit ;;
     x86_64:Linux:*:*)
-	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+	echo ${UNAME_MACHINE}-pc-linux-${LIBC}
 	exit ;;
     xtensa*:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
diff --git a/config.sub b/config.sub
index 7ffe373..1acc966 100755
--- a/config.sub
+++ b/config.sub
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2014 Free Software Foundation, Inc.
+#   Copyright 1992-2015 Free Software Foundation, Inc.
 
-timestamp='2014-12-03'
+timestamp='2015-08-20'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -68,7 +68,7 @@ Report bugs and patches to <config-patches at gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2014 Free Software Foundation, Inc.
+Copyright 1992-2015 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -117,7 +117,7 @@ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
   nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
   linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-  knetbsd*-gnu* | netbsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
   kopensolaris*-gnu* | \
   storm-chaos* | os2-emx* | rtmk-nova*)
     os=-$maybe_os
@@ -255,12 +255,13 @@ case $basic_machine in
 	| arc | arceb \
 	| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
 	| avr | avr32 \
+	| ba \
 	| be32 | be64 \
 	| bfin \
 	| c4x | c8051 | clipper \
 	| d10v | d30v | dlx | dsp16xx \
-	| epiphany \
-	| fido | fr30 | frv \
+	| e2k | epiphany \
+	| fido | fr30 | frv | ft32 \
 	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
 	| hexagon \
 	| i370 | i860 | i960 | ia64 \
@@ -305,7 +306,7 @@ case $basic_machine in
 	| riscv32 | riscv64 \
 	| rl78 | rx \
 	| score \
-	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
 	| sh64 | sh64le \
 	| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
 	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
@@ -376,12 +377,13 @@ case $basic_machine in
 	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
 	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
 	| avr-* | avr32-* \
+	| ba-* \
 	| be32-* | be64-* \
 	| bfin-* | bs2000-* \
 	| c[123]* | c30-* | [cjt]90-* | c4x-* \
 	| c8051-* | clipper-* | craynv-* | cydra-* \
 	| d10v-* | d30v-* | dlx-* \
-	| elxsi-* \
+	| e2k-* | elxsi-* \
 	| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
 	| h8300-* | h8500-* \
 	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
@@ -428,12 +430,13 @@ case $basic_machine in
 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
 	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
 	| pyramid-* \
+	| riscv32-* | riscv64-* \
 	| rl78-* | romp-* | rs6000-* | rx-* \
 	| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
 	| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
 	| sparclite-* \
-	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
 	| tahoe-* \
 	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
 	| tile*-* \
@@ -518,6 +521,9 @@ case $basic_machine in
 		basic_machine=i386-pc
 		os=-aros
 		;;
+        asmjs)
+		basic_machine=asmjs-unknown
+		;;
 	aux)
 		basic_machine=m68k-apple
 		os=-aux
@@ -1373,7 +1379,7 @@ case $os in
 	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
 	      | -sym* | -kopensolaris* | -plan9* \
 	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-	      | -aos* | -aros* \
+	      | -aos* | -aros* | -cloudabi* | -sortix* \
 	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
 	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
 	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
diff --git a/configure b/configure
index 66ac43e..de97bb5 100755
--- a/configure
+++ b/configure
@@ -801,6 +801,7 @@ infodir
 docdir
 oldincludedir
 includedir
+runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -893,6 +894,7 @@ datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE}'
@@ -1145,6 +1147,15 @@ do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1282,7 +1293,7 @@ fi
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
+		libdir localedir mandir runstatedir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1435,6 +1446,7 @@ Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -2620,12 +2632,12 @@ test -n "$target_alias" &&
 JTS_PORT=1.13.0
 
 CAPI_INTERFACE_CURRENT=10
-CAPI_INTERFACE_REVISION=0
+CAPI_INTERFACE_REVISION=1
 CAPI_INTERFACE_AGE=9
 
 VERSION_MAJOR=3
 VERSION_MINOR=5
-VERSION_PATCH=0
+VERSION_PATCH=1
 VERSION="$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH"
 
 CAPI_VERSION_MAJOR=`expr $CAPI_INTERFACE_CURRENT - $CAPI_INTERFACE_AGE`
@@ -5811,7 +5823,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-netbsd*)
+netbsd* | netbsdelf*-gnu)
   if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
     lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
   else
@@ -9497,6 +9509,9 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
   openbsd* | bitrig*)
     with_gnu_ld=no
     ;;
+  linux* | k*bsd*-gnu | gnu*)
+    link_all_deplibs=no
+    ;;
   esac
 
   ld_shlibs=yes
@@ -9751,7 +9766,7 @@ _LT_EOF
       fi
       ;;
 
-    netbsd*)
+    netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
 	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
 	wlarc=
@@ -10421,6 +10436,7 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
 	if test yes = "$lt_cv_irix_exported_symbol"; then
           archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
 	fi
+	link_all_deplibs=no
       else
 	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
 	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'
@@ -10442,7 +10458,7 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
       esac
       ;;
 
-    netbsd*)
+    netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
 	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
       else
@@ -11557,6 +11573,18 @@ fi
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
 netbsd*)
   version_type=sunos
   need_lib_prefix=no
@@ -14869,7 +14897,7 @@ lt_prog_compiler_static_CXX=
 	    ;;
 	esac
 	;;
-      netbsd*)
+      netbsd* | netbsdelf*-gnu)
 	;;
       *qnx* | *nto*)
         # QNX uses GNU C++, but need to define -shared option too, otherwise
@@ -15244,6 +15272,9 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
       ;;
     esac
     ;;
+  linux* | k*bsd*-gnu | gnu*)
+    link_all_deplibs_CXX=no
+    ;;
   *)
     export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
     ;;
@@ -15937,6 +15968,18 @@ fi
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
 netbsd*)
   version_type=sunos
   need_lib_prefix=no
@@ -17802,7 +17845,7 @@ else
 int
 main ()
 {
-double x; int y; y = isnan(x);
+double x; int y; y = std::isnan(x);
   ;
   return 0;
 }
diff --git a/configure.ac b/configure.ac
index 52710ca..2818c42 100644
--- a/configure.ac
+++ b/configure.ac
@@ -15,7 +15,7 @@ JTS_PORT=1.13.0
 
 dnl -- Version info for the CAPI
 CAPI_INTERFACE_CURRENT=10
-CAPI_INTERFACE_REVISION=0
+CAPI_INTERFACE_REVISION=1
 CAPI_INTERFACE_AGE=9
 
 dnl
@@ -24,7 +24,7 @@ dnl -- encoding ABI break at every release
 dnl
 VERSION_MAJOR=3
 VERSION_MINOR=5
-VERSION_PATCH=0
+VERSION_PATCH=1
 VERSION="$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH"
 
 dnl CAPI_VERSION_MAJOR=$(($CAPI_INTERFACE_CURRENT-$CAPI_INTERFACE_AGE))
@@ -197,7 +197,7 @@ dnl of isnan().
 AC_LANG_PUSH([C++])
 AC_CACHE_CHECK([for isnan], ac_cv_isnan,
  [AC_TRY_LINK([#include <cmath>],
- [double x; int y; y = isnan(x);],
+ [double x; int y; y = std::isnan(x);],
  ac_cv_isnan=yes,
  ac_cv_isnan=no
 )])
diff --git a/doc/Doxyfile b/doc/Doxyfile
index b482487..f9ba12f 100644
--- a/doc/Doxyfile
+++ b/doc/Doxyfile
@@ -23,7 +23,7 @@ PROJECT_NAME           =  GEOS
 # This could be handy for archiving the generated documentation or 
 # if some version control system is used.
 
-PROJECT_NUMBER         = 3.5.0
+PROJECT_NUMBER         = 3.5.1
 
 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
 # base path where the generated documentation will be put. 
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 5b8e0f9..cd3387f 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -345,6 +345,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/geos_svn_revision.h b/geos_svn_revision.h
index 18edabe..95c0006 100644
--- a/geos_svn_revision.h
+++ b/geos_svn_revision.h
@@ -1 +1 @@
-#define GEOS_SVN_REVISION 4084
+#define GEOS_SVN_REVISION 4246
diff --git a/include/Makefile.in b/include/Makefile.in
index e7a88f6..550848d 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -381,6 +381,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/._version.h.vc b/include/geos/._version.h.vc
deleted file mode 100644
index 2271589..0000000
Binary files a/include/geos/._version.h.vc and /dev/null differ
diff --git a/include/geos/Makefile.in b/include/geos/Makefile.in
index d0344f6..442424d 100644
--- a/include/geos/Makefile.in
+++ b/include/geos/Makefile.in
@@ -381,6 +381,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/algorithm/Makefile.in b/include/geos/algorithm/Makefile.in
index 0b2837c..27f20c7 100644
--- a/include/geos/algorithm/Makefile.in
+++ b/include/geos/algorithm/Makefile.in
@@ -380,6 +380,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/algorithm/PointLocator.h b/include/geos/algorithm/PointLocator.h
index 2322739..43bf428 100644
--- a/include/geos/algorithm/PointLocator.h
+++ b/include/geos/algorithm/PointLocator.h
@@ -31,6 +31,7 @@ namespace geos {
 		class LinearRing;
 		class LineString;
 		class Polygon;
+		class Point;
 	}
 }
 
@@ -93,6 +94,8 @@ private:
 
 	void updateLocationInfo(int loc);
 
+	int locate(const geom::Coordinate& p, const geom::Point *pt);
+
 	int locate(const geom::Coordinate& p, const geom::LineString *l);
 
 	int locateInPolygonRing(const geom::Coordinate& p, const geom::LinearRing *ring);
diff --git a/include/geos/algorithm/distance/Makefile.in b/include/geos/algorithm/distance/Makefile.in
index 01aca11..a7df700 100644
--- a/include/geos/algorithm/distance/Makefile.in
+++ b/include/geos/algorithm/distance/Makefile.in
@@ -380,6 +380,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/algorithm/locate/Makefile.in b/include/geos/algorithm/locate/Makefile.in
index eb1d2ad..46b7324 100644
--- a/include/geos/algorithm/locate/Makefile.in
+++ b/include/geos/algorithm/locate/Makefile.in
@@ -380,6 +380,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/geom/Makefile.in b/include/geos/geom/Makefile.in
index 628fab5..3dd7dc9 100644
--- a/include/geos/geom/Makefile.in
+++ b/include/geos/geom/Makefile.in
@@ -380,6 +380,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/geom/prep/Makefile.in b/include/geos/geom/prep/Makefile.in
index e1559c6..d17b5e1 100644
--- a/include/geos/geom/prep/Makefile.in
+++ b/include/geos/geom/prep/Makefile.in
@@ -345,6 +345,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/geom/util/Makefile.in b/include/geos/geom/util/Makefile.in
index af49cfd..d4a2e1c 100644
--- a/include/geos/geom/util/Makefile.in
+++ b/include/geos/geom/util/Makefile.in
@@ -345,6 +345,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/geomgraph/GeometryGraph.h b/include/geos/geomgraph/GeometryGraph.h
index 510f5be..9b533b4 100644
--- a/include/geos/geomgraph/GeometryGraph.h
+++ b/include/geos/geomgraph/GeometryGraph.h
@@ -219,12 +219,25 @@ public:
 		return computeSelfNodes(*li, computeRingSelfNodes, env);
 	}
 
+	index::SegmentIntersector* computeSelfNodes(
+			algorithm::LineIntersector *li,
+			bool computeRingSelfNodes,
+			bool isDoneIfProperInt,
+			const geom::Envelope *env=0)
+	{
+		return computeSelfNodes(*li, computeRingSelfNodes, isDoneIfProperInt, env);
+	}
+
 	// Quick inline calling the function above, the above should probably
 	// be deprecated.
 	index::SegmentIntersector* computeSelfNodes(
 			algorithm::LineIntersector& li,
 			bool computeRingSelfNodes, const geom::Envelope *env=0);
 
+	index::SegmentIntersector* computeSelfNodes(
+			algorithm::LineIntersector& li,
+			bool computeRingSelfNodes, bool isDoneIfProperInt, const geom::Envelope *env=0);
+
 	index::SegmentIntersector* computeEdgeIntersections(GeometryGraph *g,
 		algorithm::LineIntersector *li, bool includeProper,
 		const geom::Envelope *env=0);
diff --git a/include/geos/geomgraph/Makefile.in b/include/geos/geomgraph/Makefile.in
index 913a9c0..3a68b38 100644
--- a/include/geos/geomgraph/Makefile.in
+++ b/include/geos/geomgraph/Makefile.in
@@ -380,6 +380,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/geomgraph/index/Makefile.in b/include/geos/geomgraph/index/Makefile.in
index 82159e4..3fd5224 100644
--- a/include/geos/geomgraph/index/Makefile.in
+++ b/include/geos/geomgraph/index/Makefile.in
@@ -345,6 +345,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/geomgraph/index/SegmentIntersector.h b/include/geos/geomgraph/index/SegmentIntersector.h
index e6f6179..d5150e6 100644
--- a/include/geos/geomgraph/index/SegmentIntersector.h
+++ b/include/geos/geomgraph/index/SegmentIntersector.h
@@ -56,6 +56,10 @@ private:
 
 	bool hasProperInterior;
 
+	bool isDone;
+	
+	bool isDoneWhenProperInt;
+
 	// the proper intersection point found
 	geom::Coordinate properIntersectionPoint;
 
@@ -99,6 +103,8 @@ public:
 		hasIntersectionVar(false),
 		hasProper(false),
 		hasProperInterior(false),
+		isDone(false),
+		isDoneWhenProperInt(false),
 		li(newLi),
 		includeProper(newIncludeProper),
 		recordIsolated(newRecordIsolated),
@@ -123,6 +129,10 @@ public:
 
 	void addIntersections(Edge *e0, int segIndex0, Edge *e1, int segIndex1);
 
+	void setIsDoneIfProperInt(bool isDoneWhenProperInt);
+
+	bool getIsDone();
+	
 };
 
 } // namespace geos.geomgraph.index
diff --git a/include/geos/geomgraph/index/SimpleMCSweepLineIntersector.h b/include/geos/geomgraph/index/SimpleMCSweepLineIntersector.h
index 5a4f647..a73bd00 100644
--- a/include/geos/geomgraph/index/SimpleMCSweepLineIntersector.h
+++ b/include/geos/geomgraph/index/SimpleMCSweepLineIntersector.h
@@ -20,6 +20,7 @@
 #include <vector>
 
 #include <geos/geomgraph/index/EdgeSetIntersector.h> // for inheritance
+#include <geos/geomgraph/index/SegmentIntersector.h>
 
 #ifdef _MSC_VER
 #pragma warning(push)
@@ -31,7 +32,7 @@ namespace geos {
 	namespace geomgraph {
 		class Edge;
 		namespace index {
-			class SegmentIntersector;
+			// class SegmentIntersector;
 			class SweepLineEvent;
 		}
 	}
diff --git a/include/geos/index/Makefile.in b/include/geos/index/Makefile.in
index f131fa8..1b13f39 100644
--- a/include/geos/index/Makefile.in
+++ b/include/geos/index/Makefile.in
@@ -380,6 +380,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/index/bintree/Makefile.in b/include/geos/index/bintree/Makefile.in
index d78fc4f..191792b 100644
--- a/include/geos/index/bintree/Makefile.in
+++ b/include/geos/index/bintree/Makefile.in
@@ -380,6 +380,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/index/chain/Makefile.in b/include/geos/index/chain/Makefile.in
index 54679c6..c8f6e8e 100644
--- a/include/geos/index/chain/Makefile.in
+++ b/include/geos/index/chain/Makefile.in
@@ -380,6 +380,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/index/intervalrtree/Makefile.in b/include/geos/index/intervalrtree/Makefile.in
index f35dd8d..cf32f03 100644
--- a/include/geos/index/intervalrtree/Makefile.in
+++ b/include/geos/index/intervalrtree/Makefile.in
@@ -380,6 +380,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/index/quadtree/Makefile.in b/include/geos/index/quadtree/Makefile.in
index bac2290..6a1ff4c 100644
--- a/include/geos/index/quadtree/Makefile.in
+++ b/include/geos/index/quadtree/Makefile.in
@@ -380,6 +380,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/index/strtree/Makefile.in b/include/geos/index/strtree/Makefile.in
index d39f0fc..49050e0 100644
--- a/include/geos/index/strtree/Makefile.in
+++ b/include/geos/index/strtree/Makefile.in
@@ -380,6 +380,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/index/sweepline/Makefile.in b/include/geos/index/sweepline/Makefile.in
index b6a99d3..3dcad31 100644
--- a/include/geos/index/sweepline/Makefile.in
+++ b/include/geos/index/sweepline/Makefile.in
@@ -380,6 +380,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/io/Makefile.in b/include/geos/io/Makefile.in
index 0f0a993..6fc6a2b 100644
--- a/include/geos/io/Makefile.in
+++ b/include/geos/io/Makefile.in
@@ -380,6 +380,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/linearref/Makefile.in b/include/geos/linearref/Makefile.in
index f6724e4..9edf81c 100644
--- a/include/geos/linearref/Makefile.in
+++ b/include/geos/linearref/Makefile.in
@@ -338,6 +338,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/noding/Makefile.in b/include/geos/noding/Makefile.in
index 6dccd58..f5f09fc 100644
--- a/include/geos/noding/Makefile.in
+++ b/include/geos/noding/Makefile.in
@@ -380,6 +380,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/noding/snapround/Makefile.in b/include/geos/noding/snapround/Makefile.in
index 837d6e4..bb31ca0 100644
--- a/include/geos/noding/snapround/Makefile.in
+++ b/include/geos/noding/snapround/Makefile.in
@@ -345,6 +345,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/operation/Makefile.in b/include/geos/operation/Makefile.in
index 656ee5b..8c999a7 100644
--- a/include/geos/operation/Makefile.in
+++ b/include/geos/operation/Makefile.in
@@ -380,6 +380,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/operation/buffer/Makefile.in b/include/geos/operation/buffer/Makefile.in
index 85775c0..7ccdc4e 100644
--- a/include/geos/operation/buffer/Makefile.in
+++ b/include/geos/operation/buffer/Makefile.in
@@ -345,6 +345,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/operation/distance/Makefile.in b/include/geos/operation/distance/Makefile.in
index 4675f6f..da7a42b 100644
--- a/include/geos/operation/distance/Makefile.in
+++ b/include/geos/operation/distance/Makefile.in
@@ -345,6 +345,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/operation/intersection/Makefile.in b/include/geos/operation/intersection/Makefile.in
index 3d6daa1..a4b02fb 100644
--- a/include/geos/operation/intersection/Makefile.in
+++ b/include/geos/operation/intersection/Makefile.in
@@ -345,6 +345,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/operation/linemerge/Makefile.in b/include/geos/operation/linemerge/Makefile.in
index a54aecd..d928f7b 100644
--- a/include/geos/operation/linemerge/Makefile.in
+++ b/include/geos/operation/linemerge/Makefile.in
@@ -345,6 +345,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/operation/overlay/Makefile.in b/include/geos/operation/overlay/Makefile.in
index 3835797..2bde257 100644
--- a/include/geos/operation/overlay/Makefile.in
+++ b/include/geos/operation/overlay/Makefile.in
@@ -380,6 +380,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/operation/overlay/snap/Makefile.in b/include/geos/operation/overlay/snap/Makefile.in
index 5cf3354..e618fcc 100644
--- a/include/geos/operation/overlay/snap/Makefile.in
+++ b/include/geos/operation/overlay/snap/Makefile.in
@@ -345,6 +345,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/operation/polygonize/Makefile.in b/include/geos/operation/polygonize/Makefile.in
index 74b17ea..2999c7d 100644
--- a/include/geos/operation/polygonize/Makefile.in
+++ b/include/geos/operation/polygonize/Makefile.in
@@ -345,6 +345,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/operation/predicate/Makefile.in b/include/geos/operation/predicate/Makefile.in
index b8764f8..b3ed4a8 100644
--- a/include/geos/operation/predicate/Makefile.in
+++ b/include/geos/operation/predicate/Makefile.in
@@ -345,6 +345,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/operation/relate/Makefile.in b/include/geos/operation/relate/Makefile.in
index 5dd0a8b..8180d03 100644
--- a/include/geos/operation/relate/Makefile.in
+++ b/include/geos/operation/relate/Makefile.in
@@ -345,6 +345,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/operation/sharedpaths/Makefile.in b/include/geos/operation/sharedpaths/Makefile.in
index c511eb6..cb77c66 100644
--- a/include/geos/operation/sharedpaths/Makefile.in
+++ b/include/geos/operation/sharedpaths/Makefile.in
@@ -345,6 +345,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/operation/union/Makefile.in b/include/geos/operation/union/Makefile.in
index 55787a2..a941c9d 100644
--- a/include/geos/operation/union/Makefile.in
+++ b/include/geos/operation/union/Makefile.in
@@ -345,6 +345,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/operation/valid/Makefile.in b/include/geos/operation/valid/Makefile.in
index fae15bd..3f5b6c7 100644
--- a/include/geos/operation/valid/Makefile.in
+++ b/include/geos/operation/valid/Makefile.in
@@ -345,6 +345,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/planargraph/Makefile.in b/include/geos/planargraph/Makefile.in
index ca57d68..cb9a987 100644
--- a/include/geos/planargraph/Makefile.in
+++ b/include/geos/planargraph/Makefile.in
@@ -380,6 +380,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/planargraph/algorithm/Makefile.in b/include/geos/planargraph/algorithm/Makefile.in
index fb595f5..6335b78 100644
--- a/include/geos/planargraph/algorithm/Makefile.in
+++ b/include/geos/planargraph/algorithm/Makefile.in
@@ -345,6 +345,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/platform.h.cmake b/include/geos/platform.h.cmake
index f6f5d16..035a48a 100644
--- a/include/geos/platform.h.cmake
+++ b/include/geos/platform.h.cmake
@@ -19,6 +19,12 @@
 #ifndef GEOS_PLATFORM_H_INCLUDED
 #define GEOS_PLATFORM_H_INCLUDED
 
+#ifdef _MSC_VER
+#ifndef NOMINMAX
+#define NOMINMAX 1
+#endif
+#endif
+
 /* Disable inclusion of platform.h not generated by CMake */
 #define GEOS_PLATFORM_H 1
 
diff --git a/include/geos/platform.h.in b/include/geos/platform.h.in
index d8d4558..c3bc9c8 100644
--- a/include/geos/platform.h.in
+++ b/include/geos/platform.h.in
@@ -86,7 +86,7 @@ extern "C"
 #endif
 
 #if defined(HAVE_ISNAN)
-# define ISNAN(x) (isnan(x))
+# define ISNAN(x) (std::isnan(x))
 #else
 # if defined(_MSC_VER)
 #  define ISNAN(x) _isnan(x)
diff --git a/include/geos/precision/Makefile.in b/include/geos/precision/Makefile.in
index 830a7c1..76bef2d 100644
--- a/include/geos/precision/Makefile.in
+++ b/include/geos/precision/Makefile.in
@@ -345,6 +345,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/simplify/Makefile.in b/include/geos/simplify/Makefile.in
index e8e5ce2..d3cf78b 100644
--- a/include/geos/simplify/Makefile.in
+++ b/include/geos/simplify/Makefile.in
@@ -380,6 +380,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/triangulate/Makefile.in b/include/geos/triangulate/Makefile.in
index deec3c6..ea81199 100644
--- a/include/geos/triangulate/Makefile.in
+++ b/include/geos/triangulate/Makefile.in
@@ -380,6 +380,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/triangulate/quadedge/Makefile.in b/include/geos/triangulate/quadedge/Makefile.in
index 6ae41b1..7bd9fe9 100644
--- a/include/geos/triangulate/quadedge/Makefile.in
+++ b/include/geos/triangulate/quadedge/Makefile.in
@@ -380,6 +380,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/triangulate/quadedge/QuadEdgeSubdivision.h b/include/geos/triangulate/quadedge/QuadEdgeSubdivision.h
index bbf4547..d36f172 100644
--- a/include/geos/triangulate/quadedge/QuadEdgeSubdivision.h
+++ b/include/geos/triangulate/quadedge/QuadEdgeSubdivision.h
@@ -78,7 +78,7 @@ const double EDGE_COINCIDENCE_TOL_FACTOR = 1000;
  */
 class GEOS_DLL QuadEdgeSubdivision {
 public:
-	typedef std::list<QuadEdge*> QuadEdgeList;
+	typedef std::vector<QuadEdge*> QuadEdgeList;
 
 	/**
 	 * Gets the edges for the triangle to the left of the given {@link QuadEdge}.
diff --git a/include/geos/util/Makefile.in b/include/geos/util/Makefile.in
index 7ed2685..f137291 100644
--- a/include/geos/util/Makefile.in
+++ b/include/geos/util/Makefile.in
@@ -345,6 +345,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/include/geos/version.h.vc b/include/geos/version.h.vc
index 3d72406..383243f 100644
--- a/include/geos/version.h.vc
+++ b/include/geos/version.h.vc
@@ -34,11 +34,11 @@
 #endif
 
 #ifndef GEOS_VERSION_PATCH
-#define GEOS_VERSION_PATCH 0
+#define GEOS_VERSION_PATCH 1
 #endif
 
 #ifndef GEOS_VERSION
-#define GEOS_VERSION "3.5.0"
+#define GEOS_VERSION "3.5.1"
 #endif
 
 #ifndef GEOS_JTS_PORT
diff --git a/install-sh b/install-sh
index 0b0fdcb..59990a1 100755
--- a/install-sh
+++ b/install-sh
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2013-12-25.23; # UTC
+scriptversion=2014-09-12.12; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -324,34 +324,41 @@ do
             # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
             ;;
           *)
+            # $RANDOM is not portable (e.g. dash);  use it when possible to
+            # lower collision chance
             tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
-            trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+            trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
 
+            # As "mkdir -p" follows symlinks and we work in /tmp possibly;  so
+            # create the $tmpdir first (and fail if unsuccessful) to make sure
+            # that nobody tries to guess the $tmpdir name.
             if (umask $mkdir_umask &&
-                exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+                $mkdirprog $mkdir_mode "$tmpdir" &&
+                exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
             then
               if test -z "$dir_arg" || {
                    # Check for POSIX incompatibilities with -m.
                    # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
                    # other-writable bit of parent directory when it shouldn't.
                    # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
-                   ls_ld_tmpdir=`ls -ld "$tmpdir"`
+                   test_tmpdir="$tmpdir/a"
+                   ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
                    case $ls_ld_tmpdir in
                      d????-?r-*) different_mode=700;;
                      d????-?--*) different_mode=755;;
                      *) false;;
                    esac &&
-                   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
-                     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+                   $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
+                     ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
                      test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
                    }
                  }
               then posix_mkdir=:
               fi
-              rmdir "$tmpdir/d" "$tmpdir"
+              rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
             else
               # Remove any dirs left behind by ancient mkdir implementations.
-              rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+              rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
             fi
             trap '' 0;;
         esac;;
diff --git a/ltmain.sh b/ltmain.sh
index 0f0a2da..147d758 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -31,7 +31,7 @@
 
 PROGRAM=libtool
 PACKAGE=libtool
-VERSION=2.4.6
+VERSION="2.4.6 Debian-2.4.6-0.1"
 package_revision=2.4.6
 
 
@@ -2073,7 +2073,7 @@ include the following information:
        autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`
 
 Report bugs to <bug-libtool at gnu.org>.
-GNU libtool home page: <http://www.gnu.org/software/libtool/>.
+GNU libtool home page: <http://www.gnu.org/s/libtool/>.
 General help using GNU software: <http://www.gnu.org/gethelp/>."
     exit 0
 }
@@ -7272,10 +7272,13 @@ func_mode_link ()
       # -tp=*                Portland pgcc target processor selection
       # --sysroot=*          for sysroot support
       # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+      # -specs=*             GCC specs files
       # -stdlib=*            select c++ std lib with clang
+      # -fsanitize=*         Clang/GCC memory and address sanitizer
       -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
       -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
-      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*)
+      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
+      -specs=*|-fsanitize=*)
         func_quote_for_eval "$arg"
 	arg=$func_quote_for_eval_result
         func_append compile_command " $arg"
@@ -7568,7 +7571,10 @@ func_mode_link ()
 	case $pass in
 	dlopen) libs=$dlfiles ;;
 	dlpreopen) libs=$dlprefiles ;;
-	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+	link)
+	  libs="$deplibs %DEPLIBS%"
+	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
+	  ;;
 	esac
       fi
       if test lib,dlpreopen = "$linkmode,$pass"; then
@@ -7887,19 +7893,19 @@ func_mode_link ()
 	    # It is a libtool convenience library, so add in its objects.
 	    func_append convenience " $ladir/$objdir/$old_library"
 	    func_append old_convenience " $ladir/$objdir/$old_library"
+	    tmp_libs=
+	    for deplib in $dependency_libs; do
+	      deplibs="$deplib $deplibs"
+	      if $opt_preserve_dup_deps; then
+		case "$tmp_libs " in
+		*" $deplib "*) func_append specialdeplibs " $deplib" ;;
+		esac
+	      fi
+	      func_append tmp_libs " $deplib"
+	    done
 	  elif test prog != "$linkmode" && test lib != "$linkmode"; then
 	    func_fatal_error "'$lib' is not a convenience library"
 	  fi
-	  tmp_libs=
-	  for deplib in $dependency_libs; do
-	    deplibs="$deplib $deplibs"
-	    if $opt_preserve_dup_deps; then
-	      case "$tmp_libs " in
-	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
-	      esac
-	    fi
-	    func_append tmp_libs " $deplib"
-	  done
 	  continue
 	fi # $pass = conv
 
@@ -8823,6 +8829,9 @@ func_mode_link ()
 	    revision=$number_minor
 	    lt_irix_increment=no
 	    ;;
+	  *)
+	    func_fatal_configuration "$modename: unknown library version type '$version_type'"
+	    ;;
 	  esac
 	  ;;
 	no)
diff --git a/macros/._libtool.m4 b/macros/._libtool.m4
deleted file mode 100644
index 4b8deb2..0000000
Binary files a/macros/._libtool.m4 and /dev/null differ
diff --git a/macros/._ltoptions.m4 b/macros/._ltoptions.m4
deleted file mode 100644
index 3d07a38..0000000
Binary files a/macros/._ltoptions.m4 and /dev/null differ
diff --git a/macros/._ltsugar.m4 b/macros/._ltsugar.m4
deleted file mode 100644
index bc3a289..0000000
Binary files a/macros/._ltsugar.m4 and /dev/null differ
diff --git a/macros/._lt~obsolete.m4 b/macros/._lt~obsolete.m4
deleted file mode 100644
index a5ff095..0000000
Binary files a/macros/._lt~obsolete.m4 and /dev/null differ
diff --git a/macros/Makefile.in b/macros/Makefile.in
index b70fbb5..3143709 100644
--- a/macros/Makefile.in
+++ b/macros/Makefile.in
@@ -294,6 +294,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/macros/libtool.m4 b/macros/libtool.m4
index a3bc337..10ab284 100644
--- a/macros/libtool.m4
+++ b/macros/libtool.m4
@@ -2887,6 +2887,18 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
+netbsdelf*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='NetBSD ld.elf_so'
+  ;;
+
 netbsd*)
   version_type=sunos
   need_lib_prefix=no
@@ -3546,7 +3558,7 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-netbsd*)
+netbsd* | netbsdelf*-gnu)
   if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
     lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
   else
@@ -4424,7 +4436,7 @@ m4_if([$1], [CXX], [
 	    ;;
 	esac
 	;;
-      netbsd*)
+      netbsd* | netbsdelf*-gnu)
 	;;
       *qnx* | *nto*)
         # QNX uses GNU C++, but need to define -shared option too, otherwise
@@ -4936,6 +4948,9 @@ m4_if([$1], [CXX], [
       ;;
     esac
     ;;
+  linux* | k*bsd*-gnu | gnu*)
+    _LT_TAGVAR(link_all_deplibs, $1)=no
+    ;;
   *)
     _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
     ;;
@@ -4998,6 +5013,9 @@ dnl Note also adjust exclude_expsyms for C++ above.
   openbsd* | bitrig*)
     with_gnu_ld=no
     ;;
+  linux* | k*bsd*-gnu | gnu*)
+    _LT_TAGVAR(link_all_deplibs, $1)=no
+    ;;
   esac
 
   _LT_TAGVAR(ld_shlibs, $1)=yes
@@ -5252,7 +5270,7 @@ _LT_EOF
       fi
       ;;
 
-    netbsd*)
+    netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
 	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
 	wlarc=
@@ -5773,6 +5791,7 @@ _LT_EOF
 	if test yes = "$lt_cv_irix_exported_symbol"; then
           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
 	fi
+	_LT_TAGVAR(link_all_deplibs, $1)=no
       else
 	_LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib'
 	_LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib'
@@ -5794,7 +5813,7 @@ _LT_EOF
       esac
       ;;
 
-    netbsd*)
+    netbsd* | netbsdelf*-gnu)
       if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
 	_LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
       else
diff --git a/nmake.opt b/nmake.opt
index 1c9d6b8..a78515c 100644
--- a/nmake.opt
+++ b/nmake.opt
@@ -135,6 +135,9 @@ GEOS_MSC = 1900
 !ELSEIF "$(_NMAKE_VER)" == "14.00.23026.0"
 GEOS_MSVC = 14.0
 GEOS_MSC = 1900
+!ELSEIF "$(_NMAKE_VER)" == "14.00.24210.0"
+GEOS_MSVC = 14.0
+GEOS_MSC = 1900
 !ELSE
 GEOS_MSVC = 0.0
 GEOS_MSC = 0
diff --git a/php/Makefile.in b/php/Makefile.in
index d8c343e..403b843 100644
--- a/php/Makefile.in
+++ b/php/Makefile.in
@@ -440,6 +440,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/php/test/Makefile.in b/php/test/Makefile.in
index c47b80c..b5be71e 100644
--- a/php/test/Makefile.in
+++ b/php/test/Makefile.in
@@ -518,6 +518,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/Makefile.in b/src/Makefile.in
index 9d27e65..d8188e5 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -417,6 +417,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/algorithm/Makefile.in b/src/algorithm/Makefile.in
index 5d576da..ab1aaa7 100644
--- a/src/algorithm/Makefile.in
+++ b/src/algorithm/Makefile.in
@@ -389,6 +389,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/algorithm/PointLocator.cpp b/src/algorithm/PointLocator.cpp
index 2900952..0f412a7 100644
--- a/src/algorithm/PointLocator.cpp
+++ b/src/algorithm/PointLocator.cpp
@@ -20,6 +20,7 @@
 #include <geos/algorithm/PointLocator.h>
 #include <geos/algorithm/CGAlgorithms.h>
 #include <geos/geom/Geometry.h>
+#include <geos/geom/Point.h>
 #include <geos/geom/LineString.h>
 #include <geos/geom/LinearRing.h>
 #include <geos/geom/MultiLineString.h>
@@ -61,8 +62,11 @@ PointLocator::locate(const Coordinate& p, const Geometry *geom)
 void
 PointLocator::computeLocation(const Coordinate& p, const Geometry *geom)
 {
-
-	if (const LineString *ls=dynamic_cast<const LineString*>(geom))
+	if (const Point *pt=dynamic_cast<const Point*>(geom))
+	{
+		updateLocationInfo(locate(p, pt));
+	}
+	else if (const LineString *ls=dynamic_cast<const LineString*>(geom))
 	{
 		updateLocationInfo(locate(p, ls));
 	}
@@ -111,6 +115,17 @@ PointLocator::updateLocationInfo(int loc)
 
 /* private */
 int
+PointLocator::locate(const Coordinate& p, const Point *pt)
+{
+	// no point in doing envelope test, since equality test is just as fast
+	const Coordinate *ptCoord = pt->getCoordinate();
+	if (ptCoord->equals2D(p))
+		return Location::INTERIOR;
+	return Location::EXTERIOR;
+}
+
+/* private */
+int
 PointLocator::locate(const Coordinate& p, const LineString *l)
 {
 	const CoordinateSequence* pt=l->getCoordinatesRO();
diff --git a/src/algorithm/distance/Makefile.in b/src/algorithm/distance/Makefile.in
index 3b2839c..920ebbe 100644
--- a/src/algorithm/distance/Makefile.in
+++ b/src/algorithm/distance/Makefile.in
@@ -382,6 +382,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/algorithm/locate/Makefile.in b/src/algorithm/locate/Makefile.in
index b9002a4..b0a3afa 100644
--- a/src/algorithm/locate/Makefile.in
+++ b/src/algorithm/locate/Makefile.in
@@ -382,6 +382,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/geom/Makefile.in b/src/geom/Makefile.in
index 9aff5c7..7416ba7 100644
--- a/src/geom/Makefile.in
+++ b/src/geom/Makefile.in
@@ -389,6 +389,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/geom/prep/Makefile.in b/src/geom/prep/Makefile.in
index 2882bdc..3bbae9b 100644
--- a/src/geom/prep/Makefile.in
+++ b/src/geom/prep/Makefile.in
@@ -345,6 +345,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/geom/prep/PreparedPoint.cpp b/src/geom/prep/PreparedPoint.cpp
index 2018faa..1f906fe 100644
--- a/src/geom/prep/PreparedPoint.cpp
+++ b/src/geom/prep/PreparedPoint.cpp
@@ -18,7 +18,6 @@
 
 
 #include <geos/geom/prep/PreparedPoint.h>
-#include <geos/geom/Point.h>
 
 namespace geos {
 namespace geom { // geos.geom
@@ -29,10 +28,6 @@ PreparedPoint::intersects(const geom::Geometry* g) const
 {
 	if (! envelopesIntersect( g)) return false;
 
-	const Point *pt_geom = dynamic_cast<const Point *>(g);
-	if (pt_geom) 
-        return getGeometry().equals(g);
-
 	// This avoids computing topology for the test geometry
 	return isAnyTargetComponentInTest( g);
 }
diff --git a/src/geom/util/GeometryEditor.cpp b/src/geom/util/GeometryEditor.cpp
index fd45607..814b720 100644
--- a/src/geom/util/GeometryEditor.cpp
+++ b/src/geom/util/GeometryEditor.cpp
@@ -112,6 +112,13 @@ GeometryEditor::editPolygon(const Polygon *polygon,GeometryEditorOperation *oper
 	if (newPolygon->isEmpty()) {
 		//RemoveSelectedPlugIn relies on this behaviour. [Jon Aquino]
 		return newPolygon;
+		if ( newPolygon->getFactory() != factory ) {
+			Polygon *ret = factory->createPolygon(NULL, NULL);
+			delete newPolygon;
+			return ret;
+		} else {
+			return newPolygon;
+		}
 	}
 
 	Geometry* editResult = edit(newPolygon->getExteriorRing(),operation);
diff --git a/src/geom/util/Makefile.in b/src/geom/util/Makefile.in
index 0557353..f03d940 100644
--- a/src/geom/util/Makefile.in
+++ b/src/geom/util/Makefile.in
@@ -344,6 +344,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/geomgraph/GeometryGraph.cpp b/src/geomgraph/GeometryGraph.cpp
index 114692a..936094e 100644
--- a/src/geomgraph/GeometryGraph.cpp
+++ b/src/geomgraph/GeometryGraph.cpp
@@ -363,30 +363,34 @@ SegmentIntersector*
 GeometryGraph::computeSelfNodes(LineIntersector &li,
   bool computeRingSelfNodes, const Envelope *env)
 {
-	SegmentIntersector *si=new SegmentIntersector(&li,true,false);
-    	auto_ptr<EdgeSetIntersector> esi(createEdgeSetIntersector());
+	return computeSelfNodes(li, computeRingSelfNodes, false, env);
+}
+
+SegmentIntersector*
+GeometryGraph::computeSelfNodes(LineIntersector &li,
+  bool computeRingSelfNodes, bool isDoneIfProperInt, const Envelope *env)
+{
+	SegmentIntersector *si = new SegmentIntersector(&li, true, false);
+	si->setIsDoneIfProperInt(isDoneIfProperInt);
+	auto_ptr<EdgeSetIntersector> esi(createEdgeSetIntersector());
 
 	typedef vector<Edge*> EC;
 	EC *se = edges;
 	EC self_edges_copy;
+
 	if ( env && ! env->covers(parentGeom->getEnvelopeInternal()) ) {
 		collect_intersecting_edges(env, se->begin(), se->end(), self_edges_copy);
     //cerr << "(computeSelfNodes) Self edges reduced from " << se->size() << " to " << self_edges_copy.size() << endl;
 		se = &self_edges_copy;
 	}
 
-	// optimized test for Polygons and Rings
-	if (! computeRingSelfNodes
-	    && ( dynamic_cast<const LinearRing*>(parentGeom)
+	bool isRings = dynamic_cast<const LinearRing*>(parentGeom)
 	    || dynamic_cast<const Polygon*>(parentGeom)
-	    || dynamic_cast<const MultiPolygon*>(parentGeom) ))
-	{
-		esi->computeIntersections(se, si, false);
-	}
-	else
-	{
-		esi->computeIntersections(se, si, true);
-	}
+	    || dynamic_cast<const MultiPolygon*>(parentGeom);
+
+	bool computeAllSegments = computeRingSelfNodes || ! isRings;
+	
+	esi->computeIntersections(se, si, computeAllSegments);
 
 #if GEOS_DEBUG
 	cerr << "SegmentIntersector # tests = " << si->numTests << endl;
diff --git a/src/geomgraph/Makefile.in b/src/geomgraph/Makefile.in
index 2cad683..8616738 100644
--- a/src/geomgraph/Makefile.in
+++ b/src/geomgraph/Makefile.in
@@ -386,6 +386,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/geomgraph/PlanarGraph.cpp b/src/geomgraph/PlanarGraph.cpp
index ff1313b..e154cae 100644
--- a/src/geomgraph/PlanarGraph.cpp
+++ b/src/geomgraph/PlanarGraph.cpp
@@ -133,13 +133,14 @@ PlanarGraph::insertEdge(Edge *e)
 void
 PlanarGraph::add(EdgeEnd* e)
 {
+	// It is critical to add the edge to the edgeEndList first,
+	// then it is safe to follow with any potentially throwing operations.
+	assert(edgeEndList);
+	edgeEndList->push_back(e);
 
 	assert(e);
 	assert(nodes);
 	nodes->add(e);
-
-	assert(edgeEndList);
-	edgeEndList->push_back(e);
 }
 
 /*public*/
@@ -211,13 +212,14 @@ PlanarGraph::addEdges(const vector<Edge*>& edgesToAdd)
 		// PlanarGraph destructor will delete all DirectedEdges 
 		// in edgeEndList, which is where these are added
 		// by the ::add(EdgeEnd) call
-		DirectedEdge *de1=new DirectedEdge(e, true);
-		DirectedEdge *de2=new DirectedEdge(e, false);
-
-		de1->setSym(de2);
-		de2->setSym(de1);
-		add(de1);
-		add(de2);
+		std::auto_ptr<DirectedEdge> de1(new DirectedEdge(e, true));
+		std::auto_ptr<DirectedEdge> de2(new DirectedEdge(e, false));
+		de1->setSym(de2.get());
+		de2->setSym(de1.get());
+
+		// First, ::add takes the ownership, then follows with operations that may throw.
+		add(de1.release());
+		add(de2.release());
 	}
 }
 
diff --git a/src/geomgraph/index/Makefile.in b/src/geomgraph/index/Makefile.in
index 0730769..05df9e0 100644
--- a/src/geomgraph/index/Makefile.in
+++ b/src/geomgraph/index/Makefile.in
@@ -343,6 +343,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/geomgraph/index/SegmentIntersector.cpp b/src/geomgraph/index/SegmentIntersector.cpp
index 24f6de4..4f5288a 100644
--- a/src/geomgraph/index/SegmentIntersector.cpp
+++ b/src/geomgraph/index/SegmentIntersector.cpp
@@ -73,6 +73,18 @@ SegmentIntersector::hasIntersection()
 	return hasIntersectionVar;
 }
 
+void 
+SegmentIntersector::setIsDoneIfProperInt(bool idwpi) 
+{
+	isDoneWhenProperInt = idwpi;
+}
+
+bool 
+SegmentIntersector::getIsDone() 
+{
+	return isDone;
+}
+
 /*
  * A proper intersection is an intersection which is interior to at least two
  * line segments.  Note that a proper intersection is not necessarily
@@ -184,6 +196,10 @@ SegmentIntersector::addIntersections(Edge *e0,int segIndex0,Edge *e1,int segInde
 				cerr<<"SegmentIntersector::addIntersections(): properIntersectionPoint: "<<properIntersectionPoint.toString()<<endl;
 #endif // DEBUG_INTERSECT
 				hasProper=true;
+				if (isDoneWhenProperInt) 
+				{
+					isDone = true;
+				}
 				if (!isBoundaryPoint(li,bdyNodes))
 					hasProperInterior=true;
 			}
diff --git a/src/geomgraph/index/SimpleMCSweepLineIntersector.cpp b/src/geomgraph/index/SimpleMCSweepLineIntersector.cpp
index f78238c..25a6b23 100644
--- a/src/geomgraph/index/SimpleMCSweepLineIntersector.cpp
+++ b/src/geomgraph/index/SimpleMCSweepLineIntersector.cpp
@@ -135,6 +135,10 @@ SimpleMCSweepLineIntersector::computeIntersections(SegmentIntersector *si)
 		{
 			processOverlaps(i,ev->getDeleteEventIndex(),ev,si);
 		}
+		if (si->getIsDone()) 
+		{
+			break;
+		}	
 	}
 }
 
diff --git a/src/index/Makefile.in b/src/index/Makefile.in
index 3def65a..4b28b47 100644
--- a/src/index/Makefile.in
+++ b/src/index/Makefile.in
@@ -381,6 +381,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/index/bintree/Makefile.in b/src/index/bintree/Makefile.in
index 8b6a159..9943384 100644
--- a/src/index/bintree/Makefile.in
+++ b/src/index/bintree/Makefile.in
@@ -340,6 +340,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/index/chain/Makefile.in b/src/index/chain/Makefile.in
index 6cdbd4a..0018bfd 100644
--- a/src/index/chain/Makefile.in
+++ b/src/index/chain/Makefile.in
@@ -340,6 +340,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/index/intervalrtree/Makefile.in b/src/index/intervalrtree/Makefile.in
index 14056d7..c16ad58 100644
--- a/src/index/intervalrtree/Makefile.in
+++ b/src/index/intervalrtree/Makefile.in
@@ -341,6 +341,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/index/quadtree/Makefile.in b/src/index/quadtree/Makefile.in
index 6cd69ee..47e3d40 100644
--- a/src/index/quadtree/Makefile.in
+++ b/src/index/quadtree/Makefile.in
@@ -340,6 +340,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/index/strtree/Makefile.in b/src/index/strtree/Makefile.in
index d116c7c..8f77508 100644
--- a/src/index/strtree/Makefile.in
+++ b/src/index/strtree/Makefile.in
@@ -340,6 +340,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/index/sweepline/Makefile.in b/src/index/sweepline/Makefile.in
index 1803bbd..a612576 100644
--- a/src/index/sweepline/Makefile.in
+++ b/src/index/sweepline/Makefile.in
@@ -340,6 +340,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/io/Makefile.in b/src/io/Makefile.in
index 9d63ad0..4683694 100644
--- a/src/io/Makefile.in
+++ b/src/io/Makefile.in
@@ -347,6 +347,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/io/StringTokenizer.cpp b/src/io/StringTokenizer.cpp
index 79975d8..1b358e7 100644
--- a/src/io/StringTokenizer.cpp
+++ b/src/io/StringTokenizer.cpp
@@ -21,6 +21,7 @@
 
 #include <string>
 #include <cstdlib>
+#include <limits>
 
 using namespace std;
 
diff --git a/src/linearref/Makefile.in b/src/linearref/Makefile.in
index e9178bb..a0a0fde 100644
--- a/src/linearref/Makefile.in
+++ b/src/linearref/Makefile.in
@@ -343,6 +343,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/noding/Makefile.in b/src/noding/Makefile.in
index c1a6ec2..80f4291 100644
--- a/src/noding/Makefile.in
+++ b/src/noding/Makefile.in
@@ -389,6 +389,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/noding/snapround/Makefile.in b/src/noding/snapround/Makefile.in
index 7b66c21..8811b41 100644
--- a/src/noding/snapround/Makefile.in
+++ b/src/noding/snapround/Makefile.in
@@ -382,6 +382,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/operation/Makefile.in b/src/operation/Makefile.in
index 6859ac2..cdfd94c 100644
--- a/src/operation/Makefile.in
+++ b/src/operation/Makefile.in
@@ -386,6 +386,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/operation/buffer/BufferBuilder.cpp b/src/operation/buffer/BufferBuilder.cpp
index b671a7c..7e80628 100644
--- a/src/operation/buffer/BufferBuilder.cpp
+++ b/src/operation/buffer/BufferBuilder.cpp
@@ -151,7 +151,7 @@ BufferBuilder::bufferLineSingleSided( const Geometry* g, double distance,
    BufferParameters modParams = bufParams;
    modParams.setEndCapStyle(BufferParameters::CAP_FLAT); 
    modParams.setSingleSided(false); // ignore parameter for areal-only geometries
-   Geometry* buf = 0;
+   std::auto_ptr<Geometry> buf;
 
    // This is a (temp?) hack to workaround the fact that
    // BufferBuilder BufferParamaters are immutable after
@@ -159,11 +159,11 @@ BufferBuilder::bufferLineSingleSided( const Geometry* g, double distance,
    // style to FLAT for single-sided buffering
    {
       BufferBuilder tmp(modParams);
-      buf = tmp.buffer( l, distance );
+      buf.reset( tmp.buffer( l, distance ) );
    }
 
    // Create MultiLineStrings from this polygon.
-   Geometry* bufLineString = buf->getBoundary();
+   std::auto_ptr<Geometry> bufLineString ( buf->getBoundary() );
 
 #ifdef GEOS_DEBUG_SSB
    std::cerr << "input|" << *l << std::endl;
@@ -219,8 +219,8 @@ BufferBuilder::bufferLineSingleSided( const Geometry* g, double distance,
    for (size_t i=0, n=curveList.size(); i<n; ++i) delete curveList[i];
    curveList.clear();
 
-   Geometry* singleSided = geomFact->createMultiLineString(
-      singleSidedNodedEdges );
+   std::auto_ptr<Geometry> singleSided ( geomFact->createMultiLineString(
+      singleSidedNodedEdges ) );
 
 #ifdef GEOS_DEBUG_SSB
      std::cerr << "edges|" << *singleSided << std::endl;
@@ -233,7 +233,7 @@ BufferBuilder::bufferLineSingleSided( const Geometry* g, double distance,
    //       diverge from original offset curves due to the addition of
    //       intersections with caps and joins curves
    using geos::operation::overlay::snap::SnapOverlayOp;
-   Geometry* intersectedLines = SnapOverlayOp::overlayOp(*singleSided, *bufLineString, OverlayOp::opINTERSECTION).release();
+   std::auto_ptr<Geometry> intersectedLines = SnapOverlayOp::overlayOp(*singleSided, *bufLineString, OverlayOp::opINTERSECTION);
 
 #ifdef GEOS_DEBUG_SSB
      std::cerr << "intersection" << "|" << *intersectedLines << std::endl;
@@ -241,7 +241,7 @@ BufferBuilder::bufferLineSingleSided( const Geometry* g, double distance,
 
    // Merge result lines together.
    LineMerger lineMerge;
-   lineMerge.add( intersectedLines );
+   lineMerge.add( intersectedLines.get() );
    std::auto_ptr< std::vector< LineString* > > mergedLines (
 	lineMerge.getMergedLineStrings() );
 
@@ -338,10 +338,10 @@ BufferBuilder::bufferLineSingleSided( const Geometry* g, double distance,
 
    // Clean up.
    if ( noder != workingNoder ) delete noder;
-   geomFact->destroyGeometry( buf );
-   geomFact->destroyGeometry( bufLineString );
-   geomFact->destroyGeometry( singleSided );
-   geomFact->destroyGeometry( intersectedLines );
+   buf.reset();
+   bufLineString.reset();
+   singleSided.reset();
+   intersectedLines.reset();
 
    if ( mergedLinesGeom->size() > 1 )
    {      
diff --git a/src/operation/buffer/Makefile.in b/src/operation/buffer/Makefile.in
index 04c438c..bdd8f2a 100644
--- a/src/operation/buffer/Makefile.in
+++ b/src/operation/buffer/Makefile.in
@@ -385,6 +385,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/operation/distance/Makefile.in b/src/operation/distance/Makefile.in
index 8751d31..f830745 100644
--- a/src/operation/distance/Makefile.in
+++ b/src/operation/distance/Makefile.in
@@ -383,6 +383,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/operation/intersection/Makefile.in b/src/operation/intersection/Makefile.in
index b141d70..23e175e 100644
--- a/src/operation/intersection/Makefile.in
+++ b/src/operation/intersection/Makefile.in
@@ -382,6 +382,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/operation/linemerge/Makefile.in b/src/operation/linemerge/Makefile.in
index 6b36304..10b3d86 100644
--- a/src/operation/linemerge/Makefile.in
+++ b/src/operation/linemerge/Makefile.in
@@ -383,6 +383,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/operation/overlay/Makefile.in b/src/operation/overlay/Makefile.in
index 4e19ae2..8618940 100644
--- a/src/operation/overlay/Makefile.in
+++ b/src/operation/overlay/Makefile.in
@@ -393,6 +393,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/operation/overlay/snap/LineStringSnapper.cpp b/src/operation/overlay/snap/LineStringSnapper.cpp
index 887f89b..fea0624 100644
--- a/src/operation/overlay/snap/LineStringSnapper.cpp
+++ b/src/operation/overlay/snap/LineStringSnapper.cpp
@@ -153,13 +153,20 @@ cerr << " Vertex to be snapped found, snapping" << endl;
     if (vertpos == srcCoords.begin() && isClosed)
     {
       vertpos = srcCoords.end(); --vertpos;
+#if GEOS_DEBUG
+cerr << " Snapped vertex was first in a closed line, also snapping last" << endl;
+#endif
       *vertpos = snapPt;
     }
 
+#if GEOS_DEBUG
+cerr << " After snapping of vertex " << snapPt << ", srcCoors are: " << srcCoords << endl;
+#endif
+
 	}
 
 #if GEOS_DEBUG
-cerr << " After vertex snapping, srcCoors are: " << srcCoords << endl;
+cerr << " After vertices snapping, srcCoors are: " << srcCoords << endl;
 #endif
 
 }
@@ -333,9 +340,11 @@ cerr << " Before seg-snapping, srcCoors are: " << srcCoords << endl;
       LineSegment prevSeg(*segpos, seg.p0);
       if ( prevSeg.distance(newSnapPt) < seg.distance(newSnapPt) ) {
 #if GEOS_DEBUG
-        cerr << " Prev segment closer, inserting " << newSnapPt << " into " << prevSeg << endl;
+        cerr << " Prev segment closer, inserting " << newSnapPt << " into "
+             << prevSeg << endl;
 #endif
         // insert into prev segment
+        ++segpos;
         srcCoords.insert(segpos, newSnapPt);
       } else {
 #if GEOS_DEBUG
diff --git a/src/operation/polygonize/Makefile.in b/src/operation/polygonize/Makefile.in
index 4545f85..b38a779 100644
--- a/src/operation/polygonize/Makefile.in
+++ b/src/operation/polygonize/Makefile.in
@@ -383,6 +383,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/operation/predicate/Makefile.in b/src/operation/predicate/Makefile.in
index 6a446c9..7743443 100644
--- a/src/operation/predicate/Makefile.in
+++ b/src/operation/predicate/Makefile.in
@@ -346,6 +346,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/operation/relate/Makefile.in b/src/operation/relate/Makefile.in
index 81ebd4d..7b51f2d 100644
--- a/src/operation/relate/Makefile.in
+++ b/src/operation/relate/Makefile.in
@@ -383,6 +383,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/operation/sharedpaths/Makefile.in b/src/operation/sharedpaths/Makefile.in
index ee7eed2..19b2547 100644
--- a/src/operation/sharedpaths/Makefile.in
+++ b/src/operation/sharedpaths/Makefile.in
@@ -381,6 +381,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/operation/union/Makefile.in b/src/operation/union/Makefile.in
index 5110a34..6865981 100644
--- a/src/operation/union/Makefile.in
+++ b/src/operation/union/Makefile.in
@@ -382,6 +382,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/operation/valid/ConsistentAreaTester.cpp b/src/operation/valid/ConsistentAreaTester.cpp
index 63f50ad..ee30230 100644
--- a/src/operation/valid/ConsistentAreaTester.cpp
+++ b/src/operation/valid/ConsistentAreaTester.cpp
@@ -69,7 +69,10 @@ ConsistentAreaTester::isNodeConsistentArea()
 	 * To fully check validity, it is necessary to
 	 * compute ALL intersections, including self-intersections within a single edge.
 	 */
-	auto_ptr<SegmentIntersector> intersector(geomGraph->computeSelfNodes(&li, true));
+	auto_ptr<SegmentIntersector> intersector(geomGraph->computeSelfNodes(&li, true, true));
+	/**
+	* A proper intersection means that the area is not consistent.
+	*/
 	if (intersector->hasProperIntersection()) {
 		invalidPoint=intersector->getProperIntersectionPoint();
 		return false;
diff --git a/src/operation/valid/IsValidOp.cpp b/src/operation/valid/IsValidOp.cpp
index da3f5c4..5090e6f 100644
--- a/src/operation/valid/IsValidOp.cpp
+++ b/src/operation/valid/IsValidOp.cpp
@@ -189,7 +189,7 @@ IsValidOp::checkValid(const LinearRing *g){
 	if (validErr!=NULL) return;
 
 	LineIntersector li;
-	delete graph.computeSelfNodes(&li, true);
+	delete graph.computeSelfNodes(&li, true, true);
 	checkNoSelfIntersectingRings(&graph);
 }
 
diff --git a/src/operation/valid/Makefile.in b/src/operation/valid/Makefile.in
index d599be0..f830074 100644
--- a/src/operation/valid/Makefile.in
+++ b/src/operation/valid/Makefile.in
@@ -403,6 +403,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/planargraph/Makefile.in b/src/planargraph/Makefile.in
index f922900..f051234 100644
--- a/src/planargraph/Makefile.in
+++ b/src/planargraph/Makefile.in
@@ -388,6 +388,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/precision/Makefile.in b/src/precision/Makefile.in
index ffed8be..2a1f4a0 100644
--- a/src/precision/Makefile.in
+++ b/src/precision/Makefile.in
@@ -385,6 +385,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/simplify/Makefile.in b/src/simplify/Makefile.in
index 539ca93..8a17852 100644
--- a/src/simplify/Makefile.in
+++ b/src/simplify/Makefile.in
@@ -385,6 +385,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/triangulate/Makefile.in b/src/triangulate/Makefile.in
index 9654dd4..a64a467 100644
--- a/src/triangulate/Makefile.in
+++ b/src/triangulate/Makefile.in
@@ -382,6 +382,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/triangulate/quadedge/Makefile.in b/src/triangulate/quadedge/Makefile.in
index d3c8e24..54d9ed3 100644
--- a/src/triangulate/quadedge/Makefile.in
+++ b/src/triangulate/quadedge/Makefile.in
@@ -384,6 +384,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/src/triangulate/quadedge/QuadEdgeSubdivision.cpp b/src/triangulate/quadedge/QuadEdgeSubdivision.cpp
index 32680b5..1ceeb1d 100644
--- a/src/triangulate/quadedge/QuadEdgeSubdivision.cpp
+++ b/src/triangulate/quadedge/QuadEdgeSubdivision.cpp
@@ -17,6 +17,7 @@
  **********************************************************************/
 #include <geos/triangulate/quadedge/QuadEdgeSubdivision.h>
 
+#include <algorithm>
 #include <vector>
 #include <set>
 #include <iostream>
@@ -159,8 +160,8 @@ QuadEdgeSubdivision::remove(QuadEdge &e)
     QuadEdge::splice(e, e.oPrev());
     QuadEdge::splice(e.sym(), e.sym().oPrev());
 
-    // this is inefficient on an ArrayList, but this method should be called infrequently
-    quadEdges.remove(&e);
+    // this is inefficient on a std::vector, but this method should be called infrequently
+    quadEdges.erase(std::remove(quadEdges.begin(), quadEdges.end(), &e), quadEdges.end());
 
     //mark these edges as removed
     e.remove();
diff --git a/src/util/Makefile.in b/src/util/Makefile.in
index da7b119..8c013ac 100644
--- a/src/util/Makefile.in
+++ b/src/util/Makefile.in
@@ -382,6 +382,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/swig/Makefile.in b/swig/Makefile.in
index e196a8c..c322a36 100644
--- a/swig/Makefile.in
+++ b/swig/Makefile.in
@@ -355,6 +355,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/swig/geos.i b/swig/geos.i
index 8b78393..ead0a2f 100644
--- a/swig/geos.i
+++ b/swig/geos.i
@@ -29,16 +29,16 @@
    the whole c api. */
 #define GEOS_VERSION_MAJOR 3
 #define GEOS_VERSION_MINOR 5
-#define GEOS_VERSION_PATCH 0
-#define GEOS_VERSION "3.5.0"
+#define GEOS_VERSION_PATCH 1
+#define GEOS_VERSION "3.5.1"
 #define GEOS_JTS_PORT "1.13.0"
 
 #define GEOS_CAPI_VERSION_MAJOR 1
 #define GEOS_CAPI_VERSION_MINOR 9
-#define GEOS_CAPI_VERSION_PATCH 0
+#define GEOS_CAPI_VERSION_PATCH 1
 #define GEOS_CAPI_FIRST_INTERFACE GEOS_CAPI_VERSION_MAJOR 
 #define GEOS_CAPI_LAST_INTERFACE (GEOS_CAPI_VERSION_MAJOR+GEOS_CAPI_VERSION_MINOR)
-#define GEOS_CAPI_VERSION "3.5.0-CAPI-1.9.0"
+#define GEOS_CAPI_VERSION "3.5.1-CAPI-1.9.1"
 
 /* Supported geometry types */
 enum GEOSGeomTypes { 
diff --git a/swig/python/Makefile.in b/swig/python/Makefile.in
index e0d17cf..0ef9fca 100644
--- a/swig/python/Makefile.in
+++ b/swig/python/Makefile.in
@@ -427,6 +427,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/swig/python/tests/Makefile.in b/swig/python/tests/Makefile.in
index 035b57b..6e0eb17 100644
--- a/swig/python/tests/Makefile.in
+++ b/swig/python/tests/Makefile.in
@@ -290,6 +290,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/swig/ruby/Makefile.in b/swig/ruby/Makefile.in
index 6d13c3f..fad9841 100644
--- a/swig/ruby/Makefile.in
+++ b/swig/ruby/Makefile.in
@@ -417,6 +417,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/swig/ruby/test/Makefile.in b/swig/ruby/test/Makefile.in
index af9ad07..5454201 100644
--- a/swig/ruby/test/Makefile.in
+++ b/swig/ruby/test/Makefile.in
@@ -290,6 +290,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 255182c..4e05ef3 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -350,6 +350,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/tests/bigtest/Makefile.in b/tests/bigtest/Makefile.in
index 39c5627..0523c83 100644
--- a/tests/bigtest/Makefile.in
+++ b/tests/bigtest/Makefile.in
@@ -364,6 +364,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/tests/geostest/Makefile.in b/tests/geostest/Makefile.in
index fe354d7..f7258c1 100644
--- a/tests/geostest/Makefile.in
+++ b/tests/geostest/Makefile.in
@@ -338,6 +338,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/tests/perf/Makefile.in b/tests/perf/Makefile.in
index 9e40bbe..f288019 100644
--- a/tests/perf/Makefile.in
+++ b/tests/perf/Makefile.in
@@ -382,6 +382,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/tests/perf/capi/Makefile.in b/tests/perf/capi/Makefile.in
index 1a60310..3e9745f 100644
--- a/tests/perf/capi/Makefile.in
+++ b/tests/perf/capi/Makefile.in
@@ -343,6 +343,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/tests/perf/operation/Makefile.in b/tests/perf/operation/Makefile.in
index 220e499..972c13c 100644
--- a/tests/perf/operation/Makefile.in
+++ b/tests/perf/operation/Makefile.in
@@ -350,6 +350,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/tests/perf/operation/buffer/Makefile.in b/tests/perf/operation/buffer/Makefile.in
index 20a2b47..f77f583 100644
--- a/tests/perf/operation/buffer/Makefile.in
+++ b/tests/perf/operation/buffer/Makefile.in
@@ -346,6 +346,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/tests/perf/operation/predicate/Makefile.in b/tests/perf/operation/predicate/Makefile.in
index 0255676..2682e6e 100644
--- a/tests/perf/operation/predicate/Makefile.in
+++ b/tests/perf/operation/predicate/Makefile.in
@@ -346,6 +346,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/tests/thread/Makefile.in b/tests/thread/Makefile.in
index 5ced8f8..e05a2da 100644
--- a/tests/thread/Makefile.in
+++ b/tests/thread/Makefile.in
@@ -341,6 +341,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/tests/unit/Makefile.in b/tests/unit/Makefile.in
index 976ba84..f67c414 100644
--- a/tests/unit/Makefile.in
+++ b/tests/unit/Makefile.in
@@ -657,6 +657,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/tests/unit/algorithm/PointLocatorTest.cpp b/tests/unit/algorithm/PointLocatorTest.cpp
index eaf9dca..509c829 100644
--- a/tests/unit/algorithm/PointLocatorTest.cpp
+++ b/tests/unit/algorithm/PointLocatorTest.cpp
@@ -96,8 +96,15 @@ namespace tut
 	    runPtLocator(Location::EXTERIOR, Coordinate(11, 11),
 	                     "LINEARRING(10 10, 10 20, 20 10, 10 10)");
 	}
-		      
 
+	// 5 - TestPointLocator Point inside MultiPoint
+	template<>
+	template<>
+	void object::test<5>()
+	{
+		runPtLocator(Location::INTERIOR, Coordinate(0, 0),
+				"MULTIPOINT ((1 1), (0 0))");
+	}
 
 } // namespace tut
 
diff --git a/tests/unit/operation/overlay/snap/LineStringSnapperTest.cpp b/tests/unit/operation/overlay/snap/LineStringSnapperTest.cpp
index 8c38e90..4657868 100644
--- a/tests/unit/operation/overlay/snap/LineStringSnapperTest.cpp
+++ b/tests/unit/operation/overlay/snap/LineStringSnapperTest.cpp
@@ -293,7 +293,6 @@ namespace tut
   }
 
   // Test two candidate vertices snaps
-/* The following one fails, I bet in JTS too.. but haven't tested
   template<>
   template<>
   void object::test<8>()
@@ -329,6 +328,50 @@ namespace tut
     ensure_equals(ret->operator[](1), src_b);
     ensure_equals(ret->operator[](2), src_c);
   }
-*/
+
+  // Snap of last segment in closed linestring
+  // See https://trac.osgeo.org/geos/ticket/758
+  template<>
+  template<>
+  void object::test<9>()
+  {
+    using geos::geom::Coordinate;
+    using geos::operation::overlay::snap::LineStringSnapper;
+
+    typedef std::auto_ptr<Coordinate::Vect> CoordsVectAptr;
+
+
+    // Source: (1 1, 5 9, 9 1, 1 1)
+    Coordinate src_a(1, 1);
+    Coordinate src_b(5, 9);
+    Coordinate src_c(9, 1);
+    Coordinate::Vect srcCoords;
+    srcCoords.push_back(src_a);
+    srcCoords.push_back(src_b);
+    srcCoords.push_back(src_c);
+    srcCoords.push_back(src_a);
+
+    // Snap: (0 0, 10 0, 1 0.5)
+    Coordinate snp_a(0, 0);
+    Coordinate snp_b(10, 0);
+    Coordinate snp_c(1, 0.5);
+    Coordinate::ConstVect snpCoords;
+    snpCoords.push_back( &snp_a );
+    snpCoords.push_back( &snp_b );
+    snpCoords.push_back( &snp_c );
+
+    // Snap with tolerance of 2
+    // (both first and second point could be snapped)
+    LineStringSnapper snapper(srcCoords, 2);
+
+    // Expect: (0 0, 5 9, 10 0, 1 0.5, 0 0)
+    CoordsVectAptr ret(snapper.snapTo(snpCoords));
+    ensure_equals(ret->size(), 5u);
+    ensure_equals(ret->operator[](0), snp_a); //  0 0
+    ensure_equals(ret->operator[](1), src_b); //  5 9
+    ensure_equals(ret->operator[](2), snp_b); // 10 0
+    ensure_equals(ret->operator[](3), snp_c); //  1 0.5
+    ensure_equals(ret->operator[](4), snp_a); //  0 0
+  }
 
 } // namespace tut
diff --git a/tests/unit/triangulate/DelaunayTest.cpp b/tests/unit/triangulate/DelaunayTest.cpp
index 719e8d9..e6ed3e1 100644
--- a/tests/unit/triangulate/DelaunayTest.cpp
+++ b/tests/unit/triangulate/DelaunayTest.cpp
@@ -181,14 +181,12 @@ namespace tut
 		v->push_back( Coordinate (150,200) );
 		v->push_back( Coordinate (180,270) );
 		v->push_back( Coordinate (275,163) );
+		geos::geom::CoordinateArraySequence seq(v);
 
-		geos::geom::CoordinateArraySequence *seq = new CoordinateArraySequence(v);
-
-		Envelope env = DelaunayTriangulationBuilder::envelope(*seq);
+		Envelope env = DelaunayTriangulationBuilder::envelope(seq);
 
 		ensure_equals(env.getWidth() , 125);
 		ensure_equals(env.getHeight() , 107);
-
 	}
 
 } // namespace tut
diff --git a/tests/xmltester/CMakeLists.txt b/tests/xmltester/CMakeLists.txt
index c6c7534..3ee3eea 100644
--- a/tests/xmltester/CMakeLists.txt
+++ b/tests/xmltester/CMakeLists.txt
@@ -56,10 +56,10 @@ if(GEOS_ENABLE_TESTS)
     ${XMLTESTS_DIR}/buffer.xml
     ${XMLTESTS_DIR}/test.xml
     ${XMLTESTS_DIR}/singlesidedbuffer.xml
-    ${XMLTESTS_DIR}/bug176.xml
-    ${XMLTESTS_DIR}/bug188.xml
-    ${XMLTESTS_DIR}/bug244.xml
-    ${XMLTESTS_DIR}/bug275.xml
+    ${XMLTESTS_DIR}/ticket/bug176.xml
+    ${XMLTESTS_DIR}/ticket/bug188.xml
+    ${XMLTESTS_DIR}/ticket/bug244.xml
+    ${XMLTESTS_DIR}/ticket/bug275.xml
     ${XMLTESTS_DIR}/general/TestBoundary.xml
     ${XMLTESTS_DIR}/general/TestBuffer.xml
     ${XMLTESTS_DIR}/general/TestBufferMitredJoin.xml
diff --git a/tests/xmltester/Makefile.in b/tests/xmltester/Makefile.in
index 45f9282..29674aa 100644
--- a/tests/xmltester/Makefile.in
+++ b/tests/xmltester/Makefile.in
@@ -585,6 +585,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff --git a/tools/Makefile.in b/tools/Makefile.in
index 7b77293..748ec8a 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -320,6 +320,7 @@ program_transform_name = @program_transform_name@
 psdir = @psdir@
 pyexecdir = @pyexecdir@
 pythondir = @pythondir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/geos.git



More information about the Pkg-grass-devel mailing list