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

markus_wanner-guest pushed a commit to branch master
in repository postgis.

commit d414313638a8e8026bb6dc8951223054b35434b7
Author: Markus Wanner <mar...@bluegap.ch>
Date:   Fri Jul 10 07:28:07 2015 +0200

    Imported Upstream version 2.1.8+dfsg
---
 ._config.guess                                     | Bin 0 -> 239 bytes
 ._config.sub                                       | Bin 0 -> 239 bytes
 ._install-sh                                       | Bin 0 -> 239 bytes
 ChangeLog                                          | 147 ++++++++++++
 NEWS                                               |  15 ++
 README.postgis                                     |   4 +-
 Version.config                                     |   2 +-
 config.guess                                       |   6 +-
 config.sub                                         |  10 +-
 configure                                          | 255 +++++++++++++++------
 configure.ac                                       |   2 +-
 doc/faq_raster.xml                                 |   3 +-
 doc/introduction.xml                               |   2 +-
 doc/reference_sfcgal.xml                           |   7 +
 doc/release_notes.xml                              |  59 +++--
 extensions/postgis/postgis.control                 |   2 +-
 .../postgis_tiger_geocoder.control                 |   2 +-
 .../postgis_topology/postgis_topology.control      |   2 +-
 extensions/upgradeable_versions.mk                 |  11 +-
 liblwgeom/Makefile.in                              |   1 +
 liblwgeom/cunit/cu_algorithm.c                     |  11 +-
 liblwgeom/cunit/cu_libgeom.c                       |  46 +++-
 liblwgeom/cunit/cu_ptarray.c                       |   2 +-
 liblwgeom/g_serialized.c                           |  47 ++--
 liblwgeom/lwgeodetic.h                             |   4 +-
 liblwgeom/lwgeodetic_tree.h                        |   2 +-
 liblwgeom/lwgeom.c                                 |   7 +-
 liblwgeom/lwgeom_geos.c                            |   4 +-
 liblwgeom/lwin_geojson.c                           |  71 +++---
 liblwgeom/lwline.c                                 |   7 +-
 liblwgeom/lwlinearreferencing.c                    |  28 ++-
 liblwgeom/ptarray.c                                |  10 +-
 libtool                                            | 159 +++++++++++--
 loader/shp2pgsql-core.c                            |   5 +
 loader/shp2pgsql-core.h                            |   5 +-
 ltmain.sh                                          |  81 ++++++-
 macros/._libtool.m4                                | Bin 0 -> 239 bytes
 macros/._ltoptions.m4                              | Bin 0 -> 239 bytes
 macros/._ltsugar.m4                                | Bin 0 -> 239 bytes
 macros/._lt~obsolete.m4                            | Bin 0 -> 239 bytes
 macros/libtool.m4                                  | 171 +++++++++-----
 macros/ltoptions.m4                                |   2 +-
 macros/ltsugar.m4                                  |   2 +-
 macros/ltversion.m4                                |  12 +-
 macros/lt~obsolete.m4                              |   2 +-
 postgis/geography_btree.c                          |  32 ++-
 postgis/geography_inout.c                          |   4 +-
 postgis/lwgeom_accum.c                             |  11 +-
 postgis/lwgeom_export.c                            |  42 ++--
 postgis/lwgeom_functions_basic.c                   |   9 +-
 postgis/postgis.sql.in                             |  95 ++++----
 postgis/sqldefines.h                               |  10 +-
 postgis_svn_revision.h                             |   2 +-
 raster/test/regress/tickets.sql                    |  84 +++++++
 raster/test/regress/tickets_expected               |   9 +
 regress/affine.sql                                 |   3 +
 regress/affine_expected                            |   1 +
 regress/in_geojson.sql                             |  16 ++
 regress/in_geojson_expected                        |  10 +
 regress/regress_lrs.sql                            |   1 +
 regress/regress_lrs_expected                       |   1 +
 61 files changed, 1154 insertions(+), 384 deletions(-)

diff --git a/._config.guess b/._config.guess
new file mode 100755
index 0000000..92de026
Binary files /dev/null and b/._config.guess differ
diff --git a/._config.sub b/._config.sub
new file mode 100755
index 0000000..3309887
Binary files /dev/null and b/._config.sub differ
diff --git a/._install-sh b/._install-sh
new file mode 100755
index 0000000..8199457
Binary files /dev/null and b/._install-sh differ
diff --git a/ChangeLog b/ChangeLog
index 8044365..4946e37 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,150 @@
+2015-07-04 05:48  robe
+
+       * doc/reference_sfcgal.xml: #3116: SFCGAL add documentation for
+         geometry backend switch. Patch from Vincent Mora
+
+2015-06-30 18:02  pramsey
+
+       * liblwgeom/lwin_geojson.c, postgis/lwgeom_export.c: Improve
+         geojson import for srs objects
+
+2015-06-24 20:23  pramsey
+
+       * NEWS: Add #3177
+
+2015-06-24 20:21  pramsey
+
+       * liblwgeom/cunit/cu_libgeom.c, liblwgeom/g_serialized.c: #3177,
+         gserialized_is_empty cannot handle nested empty cases
+
+2015-06-24 19:07  pramsey
+
+       * liblwgeom/lwgeodetic.h, liblwgeom/lwgeodetic_tree.h: Newlines on
+         fileends
+
+2015-06-24 19:06  pramsey
+
+       * liblwgeom/cunit/cu_algorithm.c: Remove memory leak
+
+2015-06-24 19:05  pramsey
+
+       * liblwgeom/cunit/cu_ptarray.c: Remote printf
+
+2015-06-11 20:06  strk
+
+       * liblwgeom/lwgeom.c: Fix backport of bbox cache fix
+
+2015-06-11 19:47  strk
+
+       * NEWS, liblwgeom/lwgeom.c, liblwgeom/lwline.c,
+         liblwgeom/lwlinearreferencing.c, postgis/geography_inout.c,
+         postgis/lwgeom_functions_basic.c, regress/affine.sql,
+         regress/affine_expected: Only add boxes to geometries that are
+         input with them (#3159)
+         
+         Includes testcase
+
+2015-06-10 09:26  strk
+
+       * NEWS, liblwgeom/Makefile.in: Remove liblwgeom.h on make uninstall
+         (#3155)
+
+2015-05-26 08:26  strk
+
+       * NEWS, liblwgeom/ptarray.c, regress/regress_lrs.sql,
+         regress/regress_lrs_expected: Fix crasher found in garden tests
+         
+         Includes testcase.
+         This is a backport of r13556 and r13555 from trunk.
+
+2015-05-19 17:38  pramsey
+
+       * postgis/lwgeom_accum.c: Build on 9.5
+
+2015-05-18 07:01  strk
+
+       * configure.ac: Fix confusing help message for --with-pgconfig
+         
+         Patch by Volf Tomáš
+
+2015-05-02 23:51  dustymugs
+
+       * raster/test/regress/tickets.sql: pg9.0 doesn't have format
+         function
+
+2015-05-02 20:45  dustymugs
+
+       * raster/test/regress/tickets.sql,
+         raster/test/regress/tickets_expected: unit tests of numeric
+         overflow. ticket #3100
+
+2015-05-02 07:01  robe
+
+       * doc/faq_raster.xml: add other error you might see to the security
+         raster faq
+
+2015-04-29 20:03  robe
+
+       * postgis/postgis.sql.in: #2365: Significantly improve performance
+         of find_srid when lots of geometry columns
+
+2015-04-29 15:55  pramsey
+
+       * postgis/lwgeom_export.c, regress/in_geojson.sql,
+         regress/in_geojson_expected: C90 madness
+
+2015-04-29 12:48  pramsey
+
+       * NEWS, postgis/lwgeom_export.c: #3104, st_asgml introduces random
+         characters in ID field
+
+2015-04-27 12:22  pramsey
+
+       * doc/introduction.xml: Update corporate info
+
+2015-04-26 05:16  robe
+
+       * extensions/upgradeable_versions.mk, postgis/postgis.sql.in: #3092
+         refinement to geometry_columns view. Also add missing 2.0/2.1
+         extension upgrade targets
+
+2015-04-26 04:33  robe
+
+       * loader/shp2pgsql-core.h: #3102 - add include <locale.h> to fix
+         mingw-64 compile issue
+
+2015-04-23 20:00  pramsey
+
+       * liblwgeom/lwgeom_geos.c: #3091, segfault in unit tests in debug
+
+2015-04-23 19:36  pramsey
+
+       * NEWS, loader/shp2pgsql-core.c: #3048, shp2pgsql - illegal number
+         format when specific system locale set
+
+2015-04-23 18:19  pramsey
+
+       * NEWS, postgis/geography_btree.c: #3018, GROUP BY geography
+         sometimes returns duplicate rows
+
+2015-04-15 15:42  pramsey
+
+       * NEWS, liblwgeom/lwin_geojson.c: #3094, fixed another one
+
+2015-03-30 12:54  pramsey
+
+       * doc/release_notes.xml: Unbalanced <simplesect>
+
+2015-03-30 12:51  pramsey
+
+       * NEWS, Version.config: Move versions forward for development
+
+2015-03-30 12:50  pramsey
+
+       * ChangeLog, NEWS, README.postgis, Version.config,
+         doc/release_notes.xml, extensions/upgradeable_versions.mk:
+         Prepare for 2.1.7
+
 2015-03-27 17:21  pramsey
 
        * liblwgeom/lwin_geojson.c: Formatting
diff --git a/NEWS b/NEWS
index a88b42f..1ffe3d1 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,18 @@
+PostGIS 2.1.8
+2015/07/07
+
+ * Bug Fixes *
+
+  - #3159, do not force a bbox cache on ST_Affine
+  - #3018, GROUP BY geography sometimes returns duplicate rows
+  - #3048, shp2pgsql - illegal number format when specific system locale set
+  - #3094, Malformed GeoJSON inputs crash backend
+  - #3104, st_asgml introduces random characters in ID field
+  - #3155, Remove liblwgeom.h on make uninstall
+  - #3177, gserialized_is_empty cannot handle nested empty cases
+  - Fix crash in ST_LineLocatePoint
+
+
 PostGIS 2.1.7
 2015/03/30
 
diff --git a/README.postgis b/README.postgis
index 08501dd..d8964ee 100644
--- a/README.postgis
+++ b/README.postgis
@@ -1,8 +1,8 @@
 PostGIS - Geographic Information Systems Extensions to PostgreSQL
 =================================================================
 
-:Version: 2.1.7
-:Date: 2015-03-30
+:Version: 2.1.8
+:Date: 2015-07-07
 :Website: http://postgis.net
 
 This distribution contains a module which implements GIS simple features, ties
diff --git a/Version.config b/Version.config
index 4beb12b..6324f3f 100644
--- a/Version.config
+++ b/Version.config
@@ -5,5 +5,5 @@
 
 POSTGIS_MAJOR_VERSION=2
 POSTGIS_MINOR_VERSION=1
-POSTGIS_MICRO_VERSION=7
+POSTGIS_MICRO_VERSION=8
 
diff --git a/config.guess b/config.guess
index 6c32c86..dbfb978 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-01-01'
 
 # 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."
diff --git a/config.sub b/config.sub
index 7cc68ba..6d2e94c 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-09-26'
+timestamp='2015-01-01'
 
 # 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-patc...@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."
@@ -260,7 +260,7 @@ case $basic_machine in
        | c4x | c8051 | clipper \
        | d10v | d30v | dlx | dsp16xx \
        | epiphany \
-       | fido | fr30 | frv \
+       | fido | fr30 | frv | ft32 \
        | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
        | hexagon \
        | i370 | i860 | i960 | ia64 \
@@ -313,6 +313,7 @@ case $basic_machine in
        | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
        | ubicom32 \
        | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+       | visium \
        | we32k \
        | x86 | xc16x | xstormy16 | xtensa \
        | z8k | z80)
@@ -440,6 +441,7 @@ case $basic_machine in
        | ubicom32-* \
        | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
        | vax-* \
+       | visium-* \
        | we32k-* \
        | x86-* | x86_64-* | xc16x-* | xps100-* \
        | xstormy16-* | xtensa*-* \
diff --git a/configure b/configure
index 120a9d0..858037a 100755
--- a/configure
+++ b/configure
@@ -757,6 +757,7 @@ ac_ct_CXX
 CXXFLAGS
 CXX
 CPP
+LT_SYS_LIBRARY_PATH
 OTOOL64
 OTOOL
 LIPO
@@ -876,6 +877,7 @@ CFLAGS
 LDFLAGS
 LIBS
 CPPFLAGS
+LT_SYS_LIBRARY_PATH
 CPP
 CXX
 CXXFLAGS
@@ -1552,6 +1554,8 @@ Some influential environment variables:
   LIBS        libraries to pass to the linker, e.g. -l<library>
   CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
               you have headers in a nonstandard directory <include dir>
+  LT_SYS_LIBRARY_PATH
+              User-defined run-time library search path.
   CPP         C preprocessor
   CXX         C++ compiler command
   CXXFLAGS    C++ compiler flags
@@ -2554,8 +2558,8 @@ esac
 
 
 
-macro_version='2.4.4'
-macro_revision='2.4.4'
+macro_version='2.4.6'
+macro_revision='2.4.6'
 
 
 
@@ -5809,6 +5813,21 @@ $as_echo "$lt_cv_truncate_bin" >&6; }
 
 
 
+
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+func_cc_basename ()
+{
+    for cc_temp in $*""; do
+      case $cc_temp in
+        compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+        distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+        \-*) ;;
+        *) break;;
+      esac
+    done
+    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; 
s%^$host_alias-%%"`
+}
+
 # Check whether --enable-libtool-lock was given.
 if test "${enable_libtool_lock+set}" = set; then :
   enableval=$enable_libtool_lock;
@@ -6816,6 +6835,41 @@ $as_echo "$lt_cv_ld_force_load" >&6; }
     ;;
   esac
 
+# func_munge_path_list VARIABLE PATH
+# -----------------------------------
+# VARIABLE is name of variable containing _space_ separated list of
+# directories to be munged by the contents of PATH, which is string
+# having a format:
+# "DIR[:DIR]:"
+#       string "DIR[ DIR]" will be prepended to VARIABLE
+# ":DIR[:DIR]"
+#       string "DIR[ DIR]" will be appended to VARIABLE
+# "DIRP[:DIRP]::[DIRA:]DIRA"
+#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
+#       "DIRA[ DIRA]" will be appended to VARIABLE
+# "DIR[:DIR]"
+#       VARIABLE will be replaced by "DIR[ DIR]"
+func_munge_path_list ()
+{
+    case x$2 in
+    x)
+        ;;
+    *:)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\"
+        ;;
+    x:*)
+        eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    *::*)
+        eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
+        eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\"
+        ;;
+    *)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    esac
+}
+
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -7403,15 +7457,8 @@ test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
 test -z "$LD" && LD=ld
 test -z "$ac_objext" && ac_objext=o
 
-for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+func_cc_basename $compiler
+cc_basename=$func_cc_basename_result
 
 
 # Only perform the check for file, if the check method requires it
@@ -9870,6 +9917,8 @@ hardcode_into_libs=no
 # flags to be left without arguments
 need_version=unknown
 
+
+
 case $host_os in
 aix3*)
   version_type=linux # correct to gnu/linux during the next big refactor
@@ -10158,6 +10207,7 @@ freebsd* | dragonfly*)
   case $version_type in
     freebsd-elf*)
       library_names_spec='$libname$release$shared_ext$versuffix 
$libname$release$shared_ext$major $libname$shared_ext'
+      soname_spec='$libname$release$shared_ext$major'
       need_version=no
       need_lib_prefix=no
       ;;
@@ -10217,10 +10267,11 @@ hpux9* | hpux10* | hpux11*)
     soname_spec='$libname$release$shared_ext$major'
     if test 32 = "$HPUX_IA64_MODE"; then
       sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 
/usr/local/lib"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
     else
       sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
     fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     ;;
   hppa*64*)
     shrext_cmds='.sl'
@@ -10372,7 +10423,12 @@ fi
   # before this can be enabled.
   hardcode_into_libs=yes
 
-  # Append ld.so.conf contents to the search path
+  # Ideally, we could use ldconfig to report *all* directores which are
+  # searched for libraries, however this is still not possible.  Aside from not
+  # being certain /sbin/ldconfig is available, command
+  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
+  # even though it is searched at run-time.  Try to do the best guess by
+  # appending ld.so.conf contents (and includes) to the search path.
   if test -f /etc/ld.so.conf; then
     lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 
2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < 
/etc/ld.so.conf | $SED -e 's/#.*//;/^[      ]*hwcap[        ]/d;s/[:,      ]/ 
/g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
     sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
@@ -10597,10 +10653,25 @@ fi
 if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
   sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
 fi
+
 if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
   sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
 fi
 
+# remember unaugmented sys_lib_dlsearch_path content for libtool script 
decls...
+configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
+
+# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
+func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
+
+# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
+configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
+
+
+
+
+
+
 
 
 
@@ -12565,15 +12636,8 @@ $RM -r conftest*
   CFLAGS=$CXXFLAGS
   compiler=$CC
   compiler_CXX=$CC
-  for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+  func_cc_basename $compiler
+cc_basename=$func_cc_basename_result
 
 
   if test -n "$compiler"; then
@@ -13960,51 +14024,6 @@ interix[3-9]*)
   postdep_objects_CXX=
   postdeps_CXX=
   ;;
-
-linux*)
-  case `$CC -V 2>&1 | sed 5q` in
-  *Sun\ C*)
-    # Sun C++ 5.9
-
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    if test yes != "$solaris_use_stlport4"; then
-      postdeps_CXX='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-
-solaris*)
-  case $cc_basename in
-  CC* | sunCC*)
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    # Adding this requires a known-good setup of shared libraries for
-    # Sun compiler versions before 5.6, else PIC objects from an old
-    # archive will be linked into the output, leading to subtle bugs.
-    if test yes != "$solaris_use_stlport4"; then
-      postdeps_CXX='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
 esac
 
 
@@ -14828,6 +14847,8 @@ hardcode_into_libs=no
 # flags to be left without arguments
 need_version=unknown
 
+
+
 case $host_os in
 aix3*)
   version_type=linux # correct to gnu/linux during the next big refactor
@@ -15114,6 +15135,7 @@ freebsd* | dragonfly*)
   case $version_type in
     freebsd-elf*)
       library_names_spec='$libname$release$shared_ext$versuffix 
$libname$release$shared_ext$major $libname$shared_ext'
+      soname_spec='$libname$release$shared_ext$major'
       need_version=no
       need_lib_prefix=no
       ;;
@@ -15173,10 +15195,11 @@ hpux9* | hpux10* | hpux11*)
     soname_spec='$libname$release$shared_ext$major'
     if test 32 = "$HPUX_IA64_MODE"; then
       sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 
/usr/local/lib"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
     else
       sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
     fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     ;;
   hppa*64*)
     shrext_cmds='.sl'
@@ -15328,7 +15351,12 @@ fi
   # before this can be enabled.
   hardcode_into_libs=yes
 
-  # Append ld.so.conf contents to the search path
+  # Ideally, we could use ldconfig to report *all* directores which are
+  # searched for libraries, however this is still not possible.  Aside from not
+  # being certain /sbin/ldconfig is available, command
+  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
+  # even though it is searched at run-time.  Try to do the best guess by
+  # appending ld.so.conf contents (and includes) to the search path.
   if test -f /etc/ld.so.conf; then
     lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 
2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < 
/etc/ld.so.conf | $SED -e 's/#.*//;/^[      ]*hwcap[        ]/d;s/[:,      ]/ 
/g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
     sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
@@ -15553,10 +15581,22 @@ fi
 if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
   sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
 fi
+
 if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
   sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
 fi
 
+# remember unaugmented sys_lib_dlsearch_path content for libtool script 
decls...
+configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
+
+# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
+func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
+
+# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
+configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
+
+
+
 
 
 
@@ -16998,7 +17038,7 @@ fi
 
 
                if test "x$PG_CONFIG" = "x"; then
-               as_fn_error $? "could not find pg_config within the current 
path. You may need to try re-running configure with a --with-pg_config 
parameter." "$LINENO" 5
+               as_fn_error $? "could not find pg_config within the current 
path. You may need to try re-running configure with a --with-pgconfig 
parameter." "$LINENO" 5
        fi
 else
                if test "x$PG_CONFIG" = "xyes"; then
@@ -21706,7 +21746,8 @@ finish_cmds='`$ECHO "$finish_cmds" | $SED 
"$delay_single_quote_subst"`'
 finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
 hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED 
"$delay_single_quote_subst"`'
 sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED 
"$delay_single_quote_subst"`'
-sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED 
"$delay_single_quote_subst"`'
+configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED 
"$delay_single_quote_subst"`'
+configure_time_lt_sys_library_path='`$ECHO 
"$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`'
 hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
 enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
 enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED 
"$delay_single_quote_subst"`'
@@ -21909,7 +21950,8 @@ postinstall_cmds \
 postuninstall_cmds \
 finish_cmds \
 sys_lib_search_path_spec \
-sys_lib_dlsearch_path_spec \
+configure_time_dlsearch_path \
+configure_time_lt_sys_library_path \
 reload_cmds_CXX \
 old_archive_cmds_CXX \
 old_archive_from_new_cmds_CXX \
@@ -22603,6 +22645,9 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
 # The names of the tagged configurations supported by this script.
 available_tags='CXX '
 
+# Configured defaults for sys_lib_dlsearch_path munging.
+: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"}
+
 # ### BEGIN LIBTOOL CONFIG
 
 # Which release of libtool.m4 was used?
@@ -22852,8 +22897,11 @@ hardcode_into_libs=$hardcode_into_libs
 # Compile-time system search path for libraries.
 sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
 
-# Run-time system search path for libraries.
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+# Detected run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path
+
+# Explicit LT_SYS_LIBRARY_PATH set during ./configure time.
+configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path
 
 # Whether dlopen is supported.
 dlopen_support=$enable_dlopen
@@ -23018,6 +23066,65 @@ compiler_lib_search_path=$lt_compiler_lib_search_path
 
 _LT_EOF
 
+    cat <<'_LT_EOF' >> "$cfgfile"
+
+# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE
+
+# func_munge_path_list VARIABLE PATH
+# -----------------------------------
+# VARIABLE is name of variable containing _space_ separated list of
+# directories to be munged by the contents of PATH, which is string
+# having a format:
+# "DIR[:DIR]:"
+#       string "DIR[ DIR]" will be prepended to VARIABLE
+# ":DIR[:DIR]"
+#       string "DIR[ DIR]" will be appended to VARIABLE
+# "DIRP[:DIRP]::[DIRA:]DIRA"
+#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
+#       "DIRA[ DIRA]" will be appended to VARIABLE
+# "DIR[:DIR]"
+#       VARIABLE will be replaced by "DIR[ DIR]"
+func_munge_path_list ()
+{
+    case x$2 in
+    x)
+        ;;
+    *:)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\"
+        ;;
+    x:*)
+        eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    *::*)
+        eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
+        eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\"
+        ;;
+    *)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    esac
+}
+
+
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+func_cc_basename ()
+{
+    for cc_temp in $*""; do
+      case $cc_temp in
+        compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+        distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+        \-*) ;;
+        *) break;;
+      esac
+    done
+    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; 
s%^$host_alias-%%"`
+}
+
+
+# ### END FUNCTIONS SHARED WITH CONFIGURE
+
+_LT_EOF
+
   case $host_os in
   aix3*)
     cat <<\_LT_EOF >> "$cfgfile"
diff --git a/configure.ac b/configure.ac
index 88c7658..b15d237 100644
--- a/configure.ac
+++ b/configure.ac
@@ -380,7 +380,7 @@ elif test "x$PG_CONFIG" = "x"; then
 
        dnl If we couldn't find pg_config, display an error
        if test "x$PG_CONFIG" = "x"; then
-               AC_MSG_ERROR([could not find pg_config within the current path. 
You may need to try re-running configure with a --with-pg_config parameter.])
+               AC_MSG_ERROR([could not find pg_config within the current path. 
You may need to try re-running configure with a --with-pgconfig parameter.])
        fi
 else
        dnl PG_CONFIG was specified; display a message to the user
diff --git a/doc/faq_raster.xml b/doc/faq_raster.xml
index 8b6e768..98d65f8 100644
--- a/doc/faq_raster.xml
+++ b/doc/faq_raster.xml
@@ -6,7 +6,8 @@
   
      <qandaentry id="faq_security_change_1">
       <question>
-        <para>I'm getting error <code>ERROR: RASTER_fromGDALRaster: Could not 
open bytea with GDAL. Check that the bytea is of a GDAL supported 
format.</code></para>
+        <para>I'm getting error <code>ERROR: RASTER_fromGDALRaster: Could not 
open bytea with GDAL. Check that the bytea is of a GDAL supported 
format.</code>  when using ST_FromGDALRaster
+        or <code>ERROR: rt_raster_to_gdal: Could not load the output GDAL 
driver</code> when trying to use ST_AsPNG or other raster input 
functions.</para>
       </question>
 
       <answer>
diff --git a/doc/introduction.xml b/doc/introduction.xml
index d8e550e..fa65056 100644
--- a/doc/introduction.xml
+++ b/doc/introduction.xml
@@ -267,7 +267,7 @@ Stadt Uster,
 UC Davis Center for Vectorborne Diseases,
 University of Laval,
 U.S Department of State (HIU),
-Vizzuality,
+CartoDB,
 Zonar Systems</para>
                </listitem>
          </varlistentry>
diff --git a/doc/reference_sfcgal.xml b/doc/reference_sfcgal.xml
index 47b808f..783e46f 100644
--- a/doc/reference_sfcgal.xml
+++ b/doc/reference_sfcgal.xml
@@ -10,6 +10,13 @@
             Installation instructions of the library can be found on SFCGAL 
home page <ulink url="http://www.sfcgal.org";>http://www.sfcgal.org</ulink>. 
             To load the functions execute postgis/sfcgal.sql
         </para>
+        <para>
+          Some SFCGAL functions replace standard ones (ST_Intersects, 
ST_Intersection, ST_Difference, ST_Union, ST_Area and ST_Distance), to switch 
between standard functions and SFCGAL function use:
+       <programlisting>SET postgis.backend = sfcgal;</programlisting>
+       and
+       <programlisting>SET postgis.backend = geos;</programlisting>
+        
+        </para>
                </abstract>
        </sect1info>
        <title>SFCGAL Functions</title>
diff --git a/doc/release_notes.xml b/doc/release_notes.xml
index 63e19c7..bcfe509 100644
--- a/doc/release_notes.xml
+++ b/doc/release_notes.xml
@@ -4,15 +4,32 @@
     <subtitle>Release Notes</subtitle>
        
     <sect1>
+      <title>Release 2.1.8</title>
+      <para>Release date: 2015-07-07</para>
+      <para>This is a critical bug fix release.</para>
+      <simplesect>
+        <title>Bug Fixes</title>
+        <para>#3159, do not force a bbox cache on ST_Affine</para>
+        <para>#3018, GROUP BY geography sometimes returns duplicate rows</para>
+        <para>#3048, shp2pgsql - illegal number format when specific system 
locale set</para>
+        <para>#3094, Malformed GeoJSON inputs crash backend</para>
+        <para>#3104, st_asgml introduces random characters in ID field</para>
+        <para>#3155, Remove liblwgeom.h on make uninstall</para>
+        <para>#3177, gserialized_is_empty cannot handle nested empty 
cases</para>
+        <para>Fix crash in ST_LineLocatePoint</para>
+      </simplesect>
+    </sect1>
+    
+    <sect1>
       <title>Release 2.1.7</title>
       <para>Release date: 2015-03-30</para>
       <para>This is a critical bug fix release.</para>
-       <simplesect>
-         <title>Bug Fixes</title>
-         <para>#3086, ST_DumpValues() crashes backend on cleanup with invalid 
band indexes</para>
-         <para>#3088, Do not (re)define strcasestr in a liblwgeom.h</para>
-         <para>#3094, Malformed GeoJSON inputs crash backend</para>
-       </simplesect>
+      <simplesect>
+        <title>Bug Fixes</title>
+        <para>#3086, ST_DumpValues() crashes backend on cleanup with invalid 
band indexes</para>
+        <para>#3088, Do not (re)define strcasestr in a liblwgeom.h</para>
+        <para>#3094, Malformed GeoJSON inputs crash backend</para>
+      </simplesect>
     </sect1>
   
     <sect1>
@@ -24,21 +41,21 @@
         <para>#3000, Ensure edge splitting and healing algorithms use 
indexes</para>
         <para>#3048, Speed up geometry simplification (J.Santana @ 
CartoDB)</para>
         <para>#3050, Speep up geometry type reading (J.Santana @ 
CartoDB)</para>
-       </simplesect>
-       <simplesect>
-         <title>Bug Fixes</title>
-         <para>#2941, allow geography columns with SRID other than 4326</para>
-         <para>#3069, small objects getting inappropriately fluffed up w/ 
boxes</para>
-         <para>#3068, Have postgis_typmod_dims return NULL for unconstrained 
dims</para>
-         <para>#3061, Allow duplicate points in JSON, GML, GML ST_GeomFrom* 
functions</para>
-         <para>#3058, Fix ND-GiST picksplit method to split on the best 
plane</para>
-         <para>#3052, Make operators &lt;-&gt; and &lt;#&gt; available for 
PostgreSQL &lt; 9.1</para>
-         <para>#3045, Fix dimensionality confusion in &amp;&amp;&amp; 
operator</para>
-         <para>#3016, Allow unregistering layers of corrupted topologies</para>
-         <para>#3015, Avoid exceptions from TopologySummary</para>
-         <para>#3020, ST_AddBand out-db bug where height using width 
value</para>
-         <para>#3031, Allow restore of Geometry(Point) tables dumped with 
empties in them</para>
-       </simplesect>
+      </simplesect>
+      <simplesect>
+        <title>Bug Fixes</title>
+        <para>#2941, allow geography columns with SRID other than 4326</para>
+        <para>#3069, small objects getting inappropriately fluffed up w/ 
boxes</para>
+        <para>#3068, Have postgis_typmod_dims return NULL for unconstrained 
dims</para>
+        <para>#3061, Allow duplicate points in JSON, GML, GML ST_GeomFrom* 
functions</para>
+        <para>#3058, Fix ND-GiST picksplit method to split on the best 
plane</para>
+        <para>#3052, Make operators &lt;-&gt; and &lt;#&gt; available for 
PostgreSQL &lt; 9.1</para>
+        <para>#3045, Fix dimensionality confusion in &amp;&amp;&amp; 
operator</para>
+        <para>#3016, Allow unregistering layers of corrupted topologies</para>
+        <para>#3015, Avoid exceptions from TopologySummary</para>
+        <para>#3020, ST_AddBand out-db bug where height using width 
value</para>
+        <para>#3031, Allow restore of Geometry(Point) tables dumped with 
empties in them</para>
+      </simplesect>
     </sect1>
   
     <sect1>
diff --git a/extensions/postgis/postgis.control 
b/extensions/postgis/postgis.control
index a25e0d5..5a5d104 100644
--- a/extensions/postgis/postgis.control
+++ b/extensions/postgis/postgis.control
@@ -1,5 +1,5 @@
 # postgis extension
 comment = 'PostGIS geometry, geography, and raster spatial types and functions'
-default_version = '2.1.7'
+default_version = '2.1.8'
 module_pathname = '$libdir/postgis-2.1'
 relocatable = true
diff --git a/extensions/postgis_tiger_geocoder/postgis_tiger_geocoder.control 
b/extensions/postgis_tiger_geocoder/postgis_tiger_geocoder.control
index 7b4efac..28434c6 100644
--- a/extensions/postgis_tiger_geocoder/postgis_tiger_geocoder.control
+++ b/extensions/postgis_tiger_geocoder/postgis_tiger_geocoder.control
@@ -1,6 +1,6 @@
 # postgis tiger geocoder extension
 comment = 'PostGIS tiger geocoder and reverse geocoder'
-default_version = '2.1.7'
+default_version = '2.1.8'
 relocatable = false
 schema = tiger
 requires = 'postgis,fuzzystrmatch'
diff --git a/extensions/postgis_topology/postgis_topology.control 
b/extensions/postgis_topology/postgis_topology.control
index 02107f5..1817162 100644
--- a/extensions/postgis_topology/postgis_topology.control
+++ b/extensions/postgis_topology/postgis_topology.control
@@ -1,6 +1,6 @@
 # postgis topology extension
 comment = 'PostGIS topology spatial types and functions'
-default_version = '2.1.7'
+default_version = '2.1.8'
 relocatable = false
 schema = topology
 requires = postgis
diff --git a/extensions/upgradeable_versions.mk 
b/extensions/upgradeable_versions.mk
index a7d1929..a91f8f1 100644
--- a/extensions/upgradeable_versions.mk
+++ b/extensions/upgradeable_versions.mk
@@ -15,7 +15,9 @@ UPGRADEABLE_VERSIONS = \
        2.1.3 \
        2.1.4 \
        2.1.5 \
-       2.1.6
+       2.1.6 \
+       2.1.7 \
+       2.1.8
        
 UPGRADEABLE_VERSIONS_MINOR = \
        2.0.0 \
@@ -24,7 +26,8 @@ UPGRADEABLE_VERSIONS_MINOR = \
        2.0.3 \
        2.0.4 \
        2.0.5 \
-       2.0.6
+       2.0.6 \
+       2.0.7
 
 UPGRADEABLE_VERSIONS_PATCH = \
        2.1.0rc1 \
@@ -36,4 +39,6 @@ UPGRADEABLE_VERSIONS_PATCH = \
        2.1.3 \
        2.1.4 \
        2.1.5 \
-       2.1.6
+       2.1.6 \
+       2.1.7 \
+       2.1.8
diff --git a/liblwgeom/Makefile.in b/liblwgeom/Makefile.in
index 5773a7d..7e7d4a0 100644
--- a/liblwgeom/Makefile.in
+++ b/liblwgeom/Makefile.in
@@ -119,6 +119,7 @@ install-liblwgeom: liblwgeom.la
 
 uninstall-liblwgeom: 
        $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/liblwgeom.la"
+       $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(includedir)/liblwgeom.h"
 
 # Make all objects depend upon postgis_config.h and postgis_svn_revision.h
 $(LT_OBJS): ../postgis_config.h ../postgis_svn_revision.h
diff --git a/liblwgeom/cunit/cu_algorithm.c b/liblwgeom/cunit/cu_algorithm.c
index 85acb5e..704a58f 100644
--- a/liblwgeom/cunit/cu_algorithm.c
+++ b/liblwgeom/cunit/cu_algorithm.c
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: cu_algorithm.c 13247 2015-02-20 15:10:29Z pramsey $
+ * $Id: cu_algorithm.c 13696 2015-06-24 19:06:01Z pramsey $
  *
  * PostGIS - Spatial Types for PostgreSQL
  * http://postgis.net
@@ -898,20 +898,25 @@ static void test_geohash_point_as_int(void)
 static void test_lwgeom_simplify(void)
 {
                LWGEOM *l;
+               LWGEOM *i;
                char *ewkt;
 
                /* Not simplifiable */
-               l = lwgeom_simplify(lwgeom_from_wkt("LINESTRING(0 0, 50 
1.00001, 100 0)", LW_PARSER_CHECK_NONE), 1.0);
+               i = lwgeom_from_wkt("LINESTRING(0 0, 50 1.00001, 100 0)", 
LW_PARSER_CHECK_NONE);
+               l = lwgeom_simplify(i, 1.0);
                ewkt = lwgeom_to_ewkt(l);
                CU_ASSERT_STRING_EQUAL(ewkt, "LINESTRING(0 0,50 1.00001,100 
0)");
                lwgeom_free(l);
+               lwgeom_free(i);
                lwfree(ewkt);
 
                /* Simplifiable */
-               l = lwgeom_simplify(lwgeom_from_wkt("LINESTRING(0 0,50 
0.99999,100 0)", LW_PARSER_CHECK_NONE), 1.0);
+               i = lwgeom_from_wkt("LINESTRING(0 0,50 0.99999,100 0)", 
LW_PARSER_CHECK_NONE);
+               l = lwgeom_simplify(i, 1.0);
                ewkt = lwgeom_to_ewkt(l);
                CU_ASSERT_STRING_EQUAL(ewkt, "LINESTRING(0 0,100 0)");
                lwgeom_free(l);
+               lwgeom_free(i);
                lwfree(ewkt);
 }
 
diff --git a/liblwgeom/cunit/cu_libgeom.c b/liblwgeom/cunit/cu_libgeom.c
index 4146ce6..3dc0080 100644
--- a/liblwgeom/cunit/cu_libgeom.c
+++ b/liblwgeom/cunit/cu_libgeom.c
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: cu_libgeom.c 13242 2015-02-19 00:22:22Z pramsey $
+ * $Id: cu_libgeom.c 13698 2015-06-24 20:21:57Z pramsey $
  *
  * PostGIS - Spatial Types for PostgreSQL
  * http://postgis.net
@@ -307,6 +307,49 @@ static void test_lwgeom_from_gserialized(void)
 
 }
 
+
+static void test_gserialized_is_empty(void)
+{
+       int i = 0;
+       struct gserialized_empty_cases {
+               const char* wkt;
+               int isempty;
+       };
+       
+       struct gserialized_empty_cases cases[] = {
+               { "POINT EMPTY", 1 },
+               { "POINT(1 1)", 0 },
+               { "LINESTRING EMPTY", 1 },
+               { "MULTILINESTRING EMPTY", 1 },
+               { "MULTILINESTRING(EMPTY)", 1 },
+               { "MULTILINESTRING(EMPTY,EMPTY)", 1 },
+               { "MULTILINESTRING(EMPTY,(0 0,1 1))", 0 },
+               { "MULTILINESTRING((0 0,1 1),EMPTY)", 0 },
+               { "MULTILINESTRING(EMPTY,(0 0,1 1),EMPTY)", 0 },
+               { "MULTILINESTRING(EMPTY,EMPTY,EMPTY)", 1 },
+               { "GEOMETRYCOLLECTION(POINT 
EMPTY,MULTILINESTRING(EMPTY,EMPTY,EMPTY))", 1 },
+               { "GEOMETRYCOLLECTION(POINT 
EMPTY,MULTILINESTRING(EMPTY),POINT(1 1))", 0 },
+               { "GEOMETRYCOLLECTION(POINT EMPTY,MULTILINESTRING(EMPTY, (0 
0)),POINT EMPTY)", 0 },
+               { "GEOMETRYCOLLECTION(POLYGON EMPTY,POINT 
EMPTY,MULTILINESTRING(EMPTY,EMPTY),POINT EMPTY)", 1 },
+               { "GEOMETRYCOLLECTION(POLYGON EMPTY,GEOMETRYCOLLECTION(POINT 
EMPTY),MULTILINESTRING(EMPTY,EMPTY),POINT EMPTY)", 1 },
+               { NULL, 0 }
+       };
+       
+       while( cases[i].wkt )
+       {
+               // i = 11;
+               LWGEOM *lw = lwgeom_from_wkt(cases[i].wkt, 
LW_PARSER_CHECK_NONE);
+               GSERIALIZED *g = gserialized_from_lwgeom(lw, 0, 0);
+               int ie = gserialized_is_empty(g);
+               // printf("%s: we say %d, they say %d\n", cases[i].wkt, 
cases[i].isempty, ie);
+               CU_ASSERT_EQUAL(ie, cases[i].isempty);
+               lwgeom_free(lw);
+               lwfree(g);
+               i++;
+       }
+}
+       
+
 static void test_geometry_type_from_string(void)
 {
        int rv;
@@ -934,4 +977,5 @@ void libgeom_suite_setup(void)
        PG_ADD_TEST(suite, test_lwgeom_is_empty);
        PG_ADD_TEST(suite, test_lwgeom_same);
        PG_ADD_TEST(suite, test_lwline_from_lwmpoint);
+       PG_ADD_TEST(suite, test_gserialized_is_empty);
 }
diff --git a/liblwgeom/cunit/cu_ptarray.c b/liblwgeom/cunit/cu_ptarray.c
index 8eb2f22..27f35f8 100644
--- a/liblwgeom/cunit/cu_ptarray.c
+++ b/liblwgeom/cunit/cu_ptarray.c
@@ -444,7 +444,7 @@ static void test_ptarray_desegmentize()
        out = lwgeom_desegmentize(in);
        str = lwgeom_to_wkt(out, WKT_ISO, 8, NULL);
        CU_ASSERT_STRING_EQUAL(str, "LINESTRING(0 0,10 0,10 10,0 10)");
-       printf("%s\n", str);
+       // printf("%s\n", str);
        lwgeom_free(in);
        lwgeom_free(out);
        lwfree(str);
diff --git a/liblwgeom/g_serialized.c b/liblwgeom/g_serialized.c
index 916f8e3..5065c7f 100644
--- a/liblwgeom/g_serialized.c
+++ b/liblwgeom/g_serialized.c
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: g_serialized.c 13367 2015-03-20 13:53:44Z pramsey $
+ * $Id: g_serialized.c 13698 2015-06-24 20:21:57Z pramsey $
  *
  * PostGIS - Spatial Types for PostgreSQL
  *
@@ -109,27 +109,46 @@ GSERIALIZED* gserialized_copy(const GSERIALIZED *g)
        return g_out;
 }
 
+static size_t gserialized_is_empty_recurse(const uint8_t *p, int *isempty);
+static size_t gserialized_is_empty_recurse(const uint8_t *p, int *isempty)
+{
+       int i;
+       int32_t type, num;
+
+       memcpy(&type, p, 4);
+       memcpy(&num, p+4, 4);
+       
+       if ( lwtype_is_collection(type) )
+       {
+               size_t lz = 8;
+               for ( i = 0; i < num; i++ )
+               {
+                       lz += gserialized_is_empty_recurse(p+lz, isempty);
+                       if ( ! *isempty )
+                               return lz;
+               }
+               *isempty = LW_TRUE;
+               return lz;
+       }
+       else
+       {
+               *isempty = (num == 0 ? LW_TRUE : LW_FALSE);
+               return 8;
+       }
+}
+
 int gserialized_is_empty(const GSERIALIZED *g)
 {
        uint8_t *p = (uint8_t*)g;
-       int i;
+       int isempty = 0;
        assert(g);
 
        p += 8; /* Skip varhdr and srid/flags */
        if( FLAGS_GET_BBOX(g->flags) )
                p += gbox_serialized_size(g->flags); /* Skip the box */
-       p += 4; /* Skip type number */
-       
-       /* For point/line/circstring this is npoints */
-       /* For polygons this is nrings */
-       /* For collections this is ngeoms */
-       memcpy(&i, p, sizeof(int));
-       
-       /* If it is non-zero, it's not empty */
-       if ( i > 0 )
-               return LW_FALSE;
-       else
-               return LW_TRUE; 
+
+       gserialized_is_empty_recurse(p, &isempty);
+       return isempty;
 }
 
 char* gserialized_to_string(const GSERIALIZED *g)
diff --git a/liblwgeom/lwgeodetic.h b/liblwgeom/lwgeodetic.h
index 302213c..75420e4 100644
--- a/liblwgeom/lwgeodetic.h
+++ b/liblwgeom/lwgeodetic.h
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: lwgeodetic.h 12343 2014-03-25 08:17:56Z pramsey $
+ * $Id: lwgeodetic.h 13697 2015-06-24 19:07:17Z pramsey $
  *
  * PostGIS - Spatial Types for PostgreSQL
  * Copyright 2009 Paul Ramsey <pram...@cleverelephant.ca>
@@ -143,4 +143,4 @@ int spheroid_project(const GEOGRAPHIC_POINT *r, const 
SPHEROID *spheroid, double
 * Maintain consistent units (radians?) throughout all calculations
 * Put an index pointer onto LWGEOM itself, and cache the indexed LWGEOM 
instead of a bare tree
 * only primitive objects should get a tree
-*/
\ No newline at end of file
+*/
diff --git a/liblwgeom/lwgeodetic_tree.h b/liblwgeom/lwgeodetic_tree.h
index c80c412..806a0e4 100644
--- a/liblwgeom/lwgeodetic_tree.h
+++ b/liblwgeom/lwgeodetic_tree.h
@@ -30,4 +30,4 @@ double circ_tree_distance_tree(const CIRC_NODE* n1, const 
CIRC_NODE* n2, const S
 CIRC_NODE* lwgeom_calculate_circ_tree(const LWGEOM* lwgeom);
 int circ_tree_get_point(const CIRC_NODE* node, POINT2D* pt);
 
-#endif /* _LWGEODETIC_TREE_H */
\ No newline at end of file
+#endif /* _LWGEODETIC_TREE_H */
diff --git a/liblwgeom/lwgeom.c b/liblwgeom/lwgeom.c
index efa4bb0..cde9183 100644
--- a/liblwgeom/lwgeom.c
+++ b/liblwgeom/lwgeom.c
@@ -1443,8 +1443,11 @@ LWGEOM* lwgeom_flip_coordinates(LWGEOM *in)
                return NULL;
        }
 
-       lwgeom_drop_bbox(in);
-       lwgeom_add_bbox(in);
+  /* only refresh bbox if X or Y changed */
+       if ( in->bbox ) {
+               lwgeom_drop_bbox(in);
+               lwgeom_add_bbox(in);
+       }
        return in;
 }
 
diff --git a/liblwgeom/lwgeom_geos.c b/liblwgeom/lwgeom_geos.c
index d24b188..459b626 100644
--- a/liblwgeom/lwgeom_geos.c
+++ b/liblwgeom/lwgeom_geos.c
@@ -219,14 +219,14 @@ ptarray_to_GEOSCoordSeq(const POINTARRAY *pa)
                {
                        p3d = getPoint3dz_cp(pa, i);
                        p2d = (const POINT2D *)p3d;
+                       LWDEBUGF(4, "Point: %g,%g,%g", p3d->x, p3d->y, p3d->z);
                }
                else
                {
                        p2d = getPoint2d_cp(pa, i);
+                       LWDEBUGF(4, "Point: %g,%g", p2d->x, p2d->y);
                }
 
-               LWDEBUGF(4, "Point: %g,%g,%g", p2d->x, p2d->y, p3d->z);
-
 #if POSTGIS_GEOS_VERSION < 33
                /* Make sure we don't pass any infinite values down into GEOS */
                /* GEOS 3.3+ is supposed to  handle this stuff OK */
diff --git a/liblwgeom/lwin_geojson.c b/liblwgeom/lwin_geojson.c
index bf3d8ea..be706f8 100644
--- a/liblwgeom/lwin_geojson.c
+++ b/liblwgeom/lwin_geojson.c
@@ -385,48 +385,34 @@ parse_geojson_multipolygon(json_object *geojson, int 
*hasz,  int root_srid)
                const int nPolys = json_object_array_length( poObjPolys );
 
                for(i = 0; i < nPolys; ++i)
-               {
-                       POINTARRAY **ppa;
-                       json_object* poObjPoly = NULL;
-                       poObjPoly = json_object_array_get_idx( poObjPolys, i );
-
-                       ppa = (POINTARRAY**) lwalloc(sizeof(POINTARRAY*));
+               {                       
+                       json_object* poObjPoly = json_object_array_get_idx( 
poObjPolys, i );
 
                        if( json_type_array == json_object_get_type( poObjPoly 
) )
                        {
-                               int nPoints;
-                               json_object* points = NULL;
-                               int ring = json_object_array_length( poObjPoly 
);
-                               ppa[0] = ptarray_construct_empty(1, 0, 1);
-
-                               points = json_object_array_get_idx( poObjPoly, 
0 );
-                               nPoints = json_object_array_length( points );
-
-                               for (j=0; j < nPoints; j++ )
+                               LWPOLY *lwpoly = 
lwpoly_construct_empty(geom->srid, lwgeom_has_z(geom), lwgeom_has_m(geom));
+                               int nRings = json_object_array_length( 
poObjPoly );
+                               
+                               for(j = 0; j < nRings; ++j)
                                {
-                                       json_object* coords = NULL;
-                                       coords = json_object_array_get_idx( 
points, j );
-                                       parse_geojson_coord(coords, hasz, 
ppa[0]);
-                               }
+                                       json_object* points = 
json_object_array_get_idx( poObjPoly, j );
+                                       
+                                       if( json_type_array == 
json_object_get_type( poObjPoly ) )
+                                       {
 
-                               for(j = 1; j < ring; ++j)
-                               {
-                                       int nPoints;
-                                       ppa = (POINTARRAY**) 
lwrealloc((POINTARRAY *) ppa, sizeof(POINTARRAY*) * (j + 1));
-                                       ppa[j] = ptarray_construct_empty(1, 0, 
1);
-                                       points = json_object_array_get_idx( 
poObjPoly, j );
+                                               POINTARRAY *pa = 
ptarray_construct_empty(1, 0, 1);
 
-                                       nPoints = json_object_array_length( 
points );
-                                       for (k=0; k < nPoints; k++ )
-                                       {
-                                               json_object* coords = NULL;
-                                               coords = 
json_object_array_get_idx( points, k );
-                                               parse_geojson_coord(coords, 
hasz, ppa[j]);
+                                               int nPoints = 
json_object_array_length( points );
+                                               for ( k=0; k < nPoints; k++ )
+                                               {
+                                                       json_object* coords = 
json_object_array_get_idx( points, k );
+                                                       
parse_geojson_coord(coords, hasz, pa);
+                                               }
+                                               
+                                               lwpoly_add_ring(lwpoly, pa);
                                        }
                                }
-
-                               geom = 
(LWGEOM*)lwmpoly_add_lwpoly((LWMPOLY*)geom,
-                                                                  
(LWPOLY*)lwpoly_construct(root_srid, NULL, ring, ppa));
+                               geom = 
(LWGEOM*)lwmpoly_add_lwpoly((LWMPOLY*)geom, lwpoly);
                        }
                }
        }
@@ -559,10 +545,19 @@ lwgeom_from_geojson(const char *geojson, char **srs)
                if (poObjSrsType != NULL)
                {
                        json_object* poObjSrsProps = findMemberByName( 
poObjSrs, "properties" );
-                       json_object* poNameURL = findMemberByName( 
poObjSrsProps, "name" );
-                       const char* pszName = json_object_get_string( poNameURL 
);
-                       *srs = lwalloc(strlen(pszName) + 1);
-                       strcpy(*srs, pszName);
+                       if ( poObjSrsProps )
+                       {
+                               json_object* poNameURL = findMemberByName( 
poObjSrsProps, "name" );
+                               if ( poNameURL )
+                               {
+                                       const char* pszName = 
json_object_get_string( poNameURL );
+                                       if ( pszName )
+                                       {
+                                               *srs = lwalloc(strlen(pszName) 
+ 1);
+                                               strcpy(*srs, pszName);
+                                       }
+                               }
+                       }
                }
        }
 
diff --git a/liblwgeom/lwline.c b/liblwgeom/lwline.c
index c698a3a..0dddaa3 100644
--- a/liblwgeom/lwline.c
+++ b/liblwgeom/lwline.c
@@ -318,8 +318,11 @@ lwline_add_lwpoint(LWLINE *line, LWPOINT *point, int where)
                return LW_FAILURE;
 
        /* Update the bounding box */
-       lwgeom_drop_bbox(lwline_as_lwgeom(line));
-       lwgeom_add_bbox(lwline_as_lwgeom(line));
+       if ( line->bbox )
+       {
+               lwgeom_drop_bbox(lwline_as_lwgeom(line));
+               lwgeom_add_bbox(lwline_as_lwgeom(line));
+       }
        
        return LW_SUCCESS;
 }
diff --git a/liblwgeom/lwlinearreferencing.c b/liblwgeom/lwlinearreferencing.c
index 267aeea..73f95ac 100644
--- a/liblwgeom/lwlinearreferencing.c
+++ b/liblwgeom/lwlinearreferencing.c
@@ -374,9 +374,12 @@ lwpoint_clip_to_ordinate_range(const LWPOINT *point, char 
ordinate, double from,
                lwcollection_add_lwgeom(lwgeom_out, lwpoint_as_lwgeom(lwp));
        }
        
-       /* Set the bbox */
-       lwgeom_drop_bbox((LWGEOM*)lwgeom_out);
-       lwgeom_add_bbox((LWGEOM*)lwgeom_out);
+       /* Set the bbox, if necessary */
+       if ( lwgeom_out->bbox )
+       {
+               lwgeom_drop_bbox((LWGEOM*)lwgeom_out);
+               lwgeom_add_bbox((LWGEOM*)lwgeom_out);
+       }
 
        return lwgeom_out;
 }
@@ -428,9 +431,12 @@ lwmpoint_clip_to_ordinate_range(const LWMPOINT *mpoint, 
char ordinate, double fr
                }
        }
        
-       /* Set the bbox */
-       lwgeom_drop_bbox((LWGEOM*)lwgeom_out);
-       lwgeom_add_bbox((LWGEOM*)lwgeom_out);
+       /* Set the bbox, if necessary */
+       if ( lwgeom_out->bbox )
+       {
+               lwgeom_drop_bbox((LWGEOM*)lwgeom_out);
+               lwgeom_add_bbox((LWGEOM*)lwgeom_out);
+       }
 
        return lwgeom_out;
 }
@@ -497,8 +503,12 @@ lwmline_clip_to_ordinate_range(const LWMLINE *mline, char 
ordinate, double from,
                                lwfree(col);
                        }
                }
-               lwgeom_drop_bbox((LWGEOM*)lwgeom_out);
-               lwgeom_add_bbox((LWGEOM*)lwgeom_out);
+               if ( lwgeom_out->bbox )
+               {
+                       lwgeom_drop_bbox((LWGEOM*)lwgeom_out);
+                       lwgeom_add_bbox((LWGEOM*)lwgeom_out);
+               }
+               
                if ( ! homogeneous )
                {
                        lwgeom_out->type = COLLECTIONTYPE;
@@ -732,7 +742,7 @@ lwline_clip_to_ordinate_range(const LWLINE *line, char 
ordinate, double from, do
        lwfree(q);
        lwfree(r);
 
-       if ( lwgeom_out->ngeoms > 0 )
+       if ( lwgeom_out->bbox && lwgeom_out->ngeoms > 0 )
        {
                lwgeom_drop_bbox((LWGEOM*)lwgeom_out);
                lwgeom_add_bbox((LWGEOM*)lwgeom_out);
diff --git a/liblwgeom/ptarray.c b/liblwgeom/ptarray.c
index 6329794..99a9410 100644
--- a/liblwgeom/ptarray.c
+++ b/liblwgeom/ptarray.c
@@ -1279,17 +1279,19 @@ ptarray_locate_point(const POINTARRAY *pa, const 
POINT4D *p4d, double *mindistou
        
        if ( ! proj4d ) proj4d = &projtmp;
 
+       start = getPoint2d_cp(pa, 0);
+
        /* If the pointarray has only one point, the nearest point is */
        /* just that point */
        if ( pa->npoints == 1 )
        {
                getPoint4d_p(pa, 0, proj4d);
-               *mindistout = distance2d_pt_pt(&p, start);
+               if ( mindistout )
+                       *mindistout = distance2d_pt_pt(&p, start);
                return 0.0;
        }
 
-       /* Loop through pointarray looking for nearest segment */ 
-       start = getPoint2d_cp(pa, 0);
+       /* Loop through pointarray looking for nearest segment */
        for (t=1; t<pa->npoints; t++)
        {
                double dist;
@@ -1738,4 +1740,4 @@ int
 ptarray_startpoint(const POINTARRAY* pa, POINT4D* pt)
 {
        return getPoint4d_p(pa, 0, pt);
-}
\ No newline at end of file
+}
diff --git a/libtool b/libtool
index 1e69385..3346985 100755
--- a/libtool
+++ b/libtool
@@ -32,11 +32,14 @@
 # The names of the tagged configurations supported by this script.
 available_tags='CXX '
 
+# Configured defaults for sys_lib_dlsearch_path munging.
+: ${LT_SYS_LIBRARY_PATH=""}
+
 # ### BEGIN LIBTOOL CONFIG
 
 # Which release of libtool.m4 was used?
-macro_version=2.4.4
-macro_revision=2.4.4
+macro_version=2.4.6
+macro_revision=2.4.6
 
 # Whether or not to build shared libraries.
 build_libtool_libs=yes
@@ -64,13 +67,13 @@ PATH_SEPARATOR=":"
 
 # The host system.
 host_alias=
-host=x86_64-apple-darwin13.4.0
-host_os=darwin13.4.0
+host=x86_64-apple-darwin14.4.0
+host_os=darwin14.4.0
 
 # The build system.
 build_alias=
-build=x86_64-apple-darwin13.4.0
-build_os=darwin13.4.0
+build=x86_64-apple-darwin14.4.0
+build_os=darwin14.4.0
 
 # A sed program that does not truncate output.
 SED="/usr/bin/sed"
@@ -279,11 +282,14 @@ finish_eval=""
 hardcode_into_libs=no
 
 # Compile-time system search path for libraries.
-sys_lib_search_path_spec="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/6.0
  /usr/local/lib"
+sys_lib_search_path_spec="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/6.1.0
  /usr/local/lib"
 
-# Run-time system search path for libraries.
+# Detected run-time system search path for libraries.
 sys_lib_dlsearch_path_spec="/usr/local/lib /lib /usr/lib"
 
+# Explicit LT_SYS_LIBRARY_PATH set during ./configure time.
+configure_time_lt_sys_library_path=""
+
 # Whether dlopen is supported.
 dlopen_support=unknown
 
@@ -445,15 +451,71 @@ compiler_lib_search_path=""
 
 # ### END LIBTOOL CONFIG
 
+
+# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE
+
+# func_munge_path_list VARIABLE PATH
+# -----------------------------------
+# VARIABLE is name of variable containing _space_ separated list of
+# directories to be munged by the contents of PATH, which is string
+# having a format:
+# "DIR[:DIR]:"
+#       string "DIR[ DIR]" will be prepended to VARIABLE
+# ":DIR[:DIR]"
+#       string "DIR[ DIR]" will be appended to VARIABLE
+# "DIRP[:DIRP]::[DIRA:]DIRA"
+#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
+#       "DIRA[ DIRA]" will be appended to VARIABLE
+# "DIR[:DIR]"
+#       VARIABLE will be replaced by "DIR[ DIR]"
+func_munge_path_list ()
+{
+    case x$2 in
+    x)
+        ;;
+    *:)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\"
+        ;;
+    x:*)
+        eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    *::*)
+        eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\"
+        eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\"
+        ;;
+    *)
+        eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\"
+        ;;
+    esac
+}
+
+
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+func_cc_basename ()
+{
+    for cc_temp in $*""; do
+      case $cc_temp in
+        compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+        distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+        \-*) ;;
+        *) break;;
+      esac
+    done
+    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; 
s%^$host_alias-%%"`
+}
+
+
+# ### END FUNCTIONS SHARED WITH CONFIGURE
+
 #! /bin/sh
 ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in
 ##               by inline-source v2014-01-03.01
 
-# libtool (GNU libtool) 2.4.4
+# libtool (GNU libtool) 2.4.6
 # Provide generalized library-building support services.
 # Written by Gordon Matzigkeit <g...@gnu.ai.mit.edu>, 1996
 
-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Copyright (C) 1996-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.
 
@@ -478,8 +540,8 @@ compiler_lib_search_path=""
 
 PROGRAM=libtool
 PACKAGE=libtool
-VERSION=2.4.4
-package_revision=2.4.4
+VERSION=2.4.6
+package_revision=2.4.6
 
 
 ## ------ ##
@@ -511,12 +573,12 @@ package_revision=2.4.4
 # libraries, which are installed to $pkgauxdir.
 
 # Set a version string for this script.
-scriptversion=2014-01-03.01; # UTC
+scriptversion=2015-01-20.17; # UTC
 
 # General shell script boiler plate, and helper functions.
 # Written by Gary V. Vaughan, 2004
 
-# Copyright (C) 2004-2014 Free Software Foundation, Inc.
+# Copyright (C) 2004-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.
 
@@ -639,7 +701,7 @@ func_path_progs ()
 
     _G_path_prog_max=0
     _G_path_prog_found=false
-    _G_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+    _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:}
     for _G_dir in $_G_PATH; do
       IFS=$_G_save_IFS
       test -z "$_G_dir" && _G_dir=.
@@ -1822,7 +1884,7 @@ scriptversion=2014-01-07.03; # UTC
 # A portable, pluggable option parser for Bourne shell.
 # Written by Gary V. Vaughan, 2010
 
-# Copyright (C) 2010-2014 Free Software Foundation, Inc.
+# Copyright (C) 2010-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.
 
@@ -2424,7 +2486,7 @@ func_version ()
 # End:
 
 # Set a version string.
-scriptversion='(GNU libtool) 2.4.4'
+scriptversion='(GNU libtool) 2.4.6'
 
 
 # func_echo ARG...
@@ -2486,7 +2548,12 @@ usage_message="Options:
 "
 
 # Additional text appended to 'usage_message' in response to '--help'.
-long_help_message=$long_help_message"
+func_help ()
+{
+    $debug_cmd
+
+    func_usage_message
+    $ECHO "$long_help_message
 
 MODE must be one of the following:
 
@@ -2510,13 +2577,15 @@ include the following information:
        compiler:       $LTCC
        compiler flags: $LTCFLAGS
        linker:         $LD (gnu? $with_gnu_ld)
-       version:        $progname (GNU libtool) 2.4.4
+       version:        $progname (GNU libtool) 2.4.6
        automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
        autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`
 
 Report bugs to <bug-libt...@gnu.org>.
 GNU libtool home page: <http://www.gnu.org/software/libtool/>.
 General help using GNU software: <http://www.gnu.org/gethelp/>."
+    exit 0
+}
 
 
 # func_lo2o OBJECT-NAME
@@ -6908,6 +6977,24 @@ func_win32_import_lib_p ()
     esac
 }
 
+# func_suncc_cstd_abi
+# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!!
+# Several compiler flags select an ABI that is incompatible with the
+# Cstd library. Avoid specifying it if any are in CXXFLAGS.
+func_suncc_cstd_abi ()
+{
+    $debug_cmd
+
+    case " $compile_command " in
+    *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" 
-library=stlport4 "*)
+      suncc_use_cstd_abi=no
+      ;;
+    *)
+      suncc_use_cstd_abi=yes
+      ;;
+    esac
+}
+
 # func_mode_link arg...
 func_mode_link ()
 {
@@ -7884,6 +7971,9 @@ func_mode_link ()
     eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
     eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
 
+    # Definition is injected by LT_CONFIG during libtool generation.
+    func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH"
+
     func_dirname "$output" "/" ""
     output_objdir=$func_dirname_result$objdir
     func_to_tool_file "$output_objdir/"
@@ -9046,6 +9136,37 @@ func_mode_link ()
          eval $var=\"$tmp_libs\"
        done # for var
       fi
+
+      # Add Sun CC postdeps if required:
+      test CXX = "$tagname" && {
+        case $host_os in
+        linux*)
+          case `$CC -V 2>&1 | sed 5q` in
+          *Sun\ C*) # Sun C++ 5.9
+            func_suncc_cstd_abi
+
+            if test no != "$suncc_use_cstd_abi"; then
+              func_append postdeps ' -library=Cstd -library=Crun'
+            fi
+            ;;
+          esac
+          ;;
+
+        solaris*)
+          func_cc_basename "$CC"
+          case $func_cc_basename_result in
+          CC* | sunCC*)
+            func_suncc_cstd_abi
+
+            if test no != "$suncc_use_cstd_abi"; then
+              func_append postdeps ' -library=Cstd -library=Crun'
+            fi
+            ;;
+          esac
+          ;;
+        esac
+      }
+
       # Last step: remove runtime libs from dependency_libs
       # (they stay in deplibs)
       tmp_libs=
diff --git a/loader/shp2pgsql-core.c b/loader/shp2pgsql-core.c
index d5bd841..8e7c20e 100644
--- a/loader/shp2pgsql-core.c
+++ b/loader/shp2pgsql-core.c
@@ -1648,6 +1648,9 @@ ShpLoaderGenerateSQLRowStatement(SHPLOADERSTATE *state, 
int item, char **strreco
        /* Add the shape attribute if we are reading it */
        if (state->config->readshape == 1)
        {
+               /* Force the locale to C */
+               char *oldlocale = setlocale(LC_NUMERIC, "C");
+               
                /* Handle the case of a NULL shape */
                if (obj->nVertices == 0)
                {
@@ -1740,6 +1743,8 @@ ShpLoaderGenerateSQLRowStatement(SHPLOADERSTATE *state, 
int item, char **strreco
 
                /* Tidy up everything */
                SHPDestroyObject(obj);
+               
+               setlocale(LC_NUMERIC, oldlocale);
        }
 
        /* Close the line correctly for dump/insert format */
diff --git a/loader/shp2pgsql-core.h b/loader/shp2pgsql-core.h
index 5ada47c..27b8070 100644
--- a/loader/shp2pgsql-core.h
+++ b/loader/shp2pgsql-core.h
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: shp2pgsql-core.h 13134 2014-12-01 08:47:21Z strk $
+ * $Id: shp2pgsql-core.h 13447 2015-04-26 04:33:54Z robe $
  *
  * PostGIS - Spatial Types for PostgreSQL
  * http://postgis.net
@@ -16,6 +16,7 @@
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
+#include <locale.h> 
 #include <ctype.h>
 #include <unistd.h>
 #include <errno.h>
@@ -29,7 +30,7 @@
 
 #include "../liblwgeom/stringbuffer.h"
 
-#define S2P_RCSID "$Id: shp2pgsql-core.h 13134 2014-12-01 08:47:21Z strk $"
+#define S2P_RCSID "$Id: shp2pgsql-core.h 13447 2015-04-26 04:33:54Z robe $"
 
 
 /* Number of digits of precision in WKT produced. */
diff --git a/ltmain.sh b/ltmain.sh
index 5eca4ae..0f0a2da 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -2,11 +2,11 @@
 ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in
 ##               by inline-source v2014-01-03.01
 
-# libtool (GNU libtool) 2.4.4
+# libtool (GNU libtool) 2.4.6
 # Provide generalized library-building support services.
 # Written by Gordon Matzigkeit <g...@gnu.ai.mit.edu>, 1996
 
-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Copyright (C) 1996-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.
 
@@ -31,8 +31,8 @@
 
 PROGRAM=libtool
 PACKAGE=libtool
-VERSION=2.4.4
-package_revision=2.4.4
+VERSION=2.4.6
+package_revision=2.4.6
 
 
 ## ------ ##
@@ -64,12 +64,12 @@ package_revision=2.4.4
 # libraries, which are installed to $pkgauxdir.
 
 # Set a version string for this script.
-scriptversion=2014-01-03.01; # UTC
+scriptversion=2015-01-20.17; # UTC
 
 # General shell script boiler plate, and helper functions.
 # Written by Gary V. Vaughan, 2004
 
-# Copyright (C) 2004-2014 Free Software Foundation, Inc.
+# Copyright (C) 2004-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.
 
@@ -192,7 +192,7 @@ func_path_progs ()
 
     _G_path_prog_max=0
     _G_path_prog_found=false
-    _G_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+    _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:}
     for _G_dir in $_G_PATH; do
       IFS=$_G_save_IFS
       test -z "$_G_dir" && _G_dir=.
@@ -1375,7 +1375,7 @@ scriptversion=2014-01-07.03; # UTC
 # A portable, pluggable option parser for Bourne shell.
 # Written by Gary V. Vaughan, 2010
 
-# Copyright (C) 2010-2014 Free Software Foundation, Inc.
+# Copyright (C) 2010-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.
 
@@ -1977,7 +1977,7 @@ func_version ()
 # End:
 
 # Set a version string.
-scriptversion='(GNU libtool) 2.4.4'
+scriptversion='(GNU libtool) 2.4.6'
 
 
 # func_echo ARG...
@@ -2039,7 +2039,12 @@ usage_message="Options:
 "
 
 # Additional text appended to 'usage_message' in response to '--help'.
-long_help_message=$long_help_message"
+func_help ()
+{
+    $debug_cmd
+
+    func_usage_message
+    $ECHO "$long_help_message
 
 MODE must be one of the following:
 
@@ -2063,13 +2068,15 @@ include the following information:
        compiler:       $LTCC
        compiler flags: $LTCFLAGS
        linker:         $LD (gnu? $with_gnu_ld)
-       version:        $progname (GNU libtool) 2.4.4
+       version:        $progname (GNU libtool) 2.4.6
        automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
        autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`
 
 Report bugs to <bug-libt...@gnu.org>.
 GNU libtool home page: <http://www.gnu.org/software/libtool/>.
 General help using GNU software: <http://www.gnu.org/gethelp/>."
+    exit 0
+}
 
 
 # func_lo2o OBJECT-NAME
@@ -6461,6 +6468,24 @@ func_win32_import_lib_p ()
     esac
 }
 
+# func_suncc_cstd_abi
+# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!!
+# Several compiler flags select an ABI that is incompatible with the
+# Cstd library. Avoid specifying it if any are in CXXFLAGS.
+func_suncc_cstd_abi ()
+{
+    $debug_cmd
+
+    case " $compile_command " in
+    *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" 
-library=stlport4 "*)
+      suncc_use_cstd_abi=no
+      ;;
+    *)
+      suncc_use_cstd_abi=yes
+      ;;
+    esac
+}
+
 # func_mode_link arg...
 func_mode_link ()
 {
@@ -7437,6 +7462,9 @@ func_mode_link ()
     eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
     eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
 
+    # Definition is injected by LT_CONFIG during libtool generation.
+    func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH"
+
     func_dirname "$output" "/" ""
     output_objdir=$func_dirname_result$objdir
     func_to_tool_file "$output_objdir/"
@@ -8599,6 +8627,37 @@ func_mode_link ()
          eval $var=\"$tmp_libs\"
        done # for var
       fi
+
+      # Add Sun CC postdeps if required:
+      test CXX = "$tagname" && {
+        case $host_os in
+        linux*)
+          case `$CC -V 2>&1 | sed 5q` in
+          *Sun\ C*) # Sun C++ 5.9
+            func_suncc_cstd_abi
+
+            if test no != "$suncc_use_cstd_abi"; then
+              func_append postdeps ' -library=Cstd -library=Crun'
+            fi
+            ;;
+          esac
+          ;;
+
+        solaris*)
+          func_cc_basename "$CC"
+          case $func_cc_basename_result in
+          CC* | sunCC*)
+            func_suncc_cstd_abi
+
+            if test no != "$suncc_use_cstd_abi"; then
+              func_append postdeps ' -library=Cstd -library=Crun'
+            fi
+            ;;
+          esac
+          ;;
+        esac
+      }
+
       # Last step: remove runtime libs from dependency_libs
       # (they stay in deplibs)
       tmp_libs=
diff --git a/macros/._libtool.m4 b/macros/._libtool.m4
new file mode 100644
index 0000000..4b8deb2
Binary files /dev/null and b/macros/._libtool.m4 differ
diff --git a/macros/._ltoptions.m4 b/macros/._ltoptions.m4
new file mode 100644
index 0000000..3d07a38
Binary files /dev/null and b/macros/._ltoptions.m4 differ
diff --git a/macros/._ltsugar.m4 b/macros/._ltsugar.m4
new file mode 100644
index 0000000..bc3a289
Binary files /dev/null and b/macros/._ltsugar.m4 differ
diff --git a/macros/._lt~obsolete.m4 b/macros/._lt~obsolete.m4
new file mode 100644
index 0000000..a5ff095
Binary files /dev/null and b/macros/._lt~obsolete.m4 differ
diff --git a/macros/libtool.m4 b/macros/libtool.m4
index 9c089e0..a3bc337 100644
--- a/macros/libtool.m4
+++ b/macros/libtool.m4
@@ -1,6 +1,6 @@
 # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
 #
-#   Copyright (C) 1996-2001, 2003-2014 Free Software Foundation, Inc.
+#   Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc.
 #   Written by Gordon Matzigkeit, 1996
 #
 # This file is free software; the Free Software Foundation gives
@@ -103,19 +103,36 @@ dnl AC_DEFUN([AC_PROG_LIBTOOL], [])
 dnl AC_DEFUN([AM_PROG_LIBTOOL], [])
 
 
+# _LT_PREPARE_CC_BASENAME
+# -----------------------
+m4_defun([_LT_PREPARE_CC_BASENAME], [
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+func_cc_basename ()
+{
+    for cc_temp in @S|@*""; do
+      case $cc_temp in
+        compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+        distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+        \-*) ;;
+        *) break;;
+      esac
+    done
+    func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; 
s%^$host_alias-%%"`
+}
+])# _LT_PREPARE_CC_BASENAME
+
+
 # _LT_CC_BASENAME(CC)
 # -------------------
-# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME,
+# but that macro is also expanded into generated libtool script, which
+# arranges for $SED and $ECHO to be set by different means.
 m4_defun([_LT_CC_BASENAME],
-[for cc_temp in $1""; do
-  case $cc_temp in
-    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
-    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+[m4_require([_LT_PREPARE_CC_BASENAME])dnl
+AC_REQUIRE([_LT_DECL_SED])dnl
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
+func_cc_basename $1
+cc_basename=$func_cc_basename_result
 ])
 
 
@@ -720,6 +737,9 @@ _LT_CONFIG_SAVE_COMMANDS([
 _LT_COPYING
 _LT_LIBTOOL_TAGS
 
+# Configured defaults for sys_lib_dlsearch_path munging.
+: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"}
+
 # ### BEGIN LIBTOOL CONFIG
 _LT_LIBTOOL_CONFIG_VARS
 _LT_LIBTOOL_TAG_VARS
@@ -727,6 +747,17 @@ _LT_LIBTOOL_TAG_VARS
 
 _LT_EOF
 
+    cat <<'_LT_EOF' >> "$cfgfile"
+
+# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE
+
+_LT_PREPARE_MUNGE_PATH_LIST
+_LT_PREPARE_CC_BASENAME
+
+# ### END FUNCTIONS SHARED WITH CONFIGURE
+
+_LT_EOF
+
   case $host_os in
   aix3*)
     cat <<\_LT_EOF >> "$cfgfile"
@@ -2202,6 +2233,47 @@ _LT_DECL([], [striplib], [1])
 ])# _LT_CMD_STRIPLIB
 
 
+# _LT_PREPARE_MUNGE_PATH_LIST
+# ---------------------------
+# Make sure func_munge_path_list() is defined correctly.
+m4_defun([_LT_PREPARE_MUNGE_PATH_LIST],
+[[# func_munge_path_list VARIABLE PATH
+# -----------------------------------
+# VARIABLE is name of variable containing _space_ separated list of
+# directories to be munged by the contents of PATH, which is string
+# having a format:
+# "DIR[:DIR]:"
+#       string "DIR[ DIR]" will be prepended to VARIABLE
+# ":DIR[:DIR]"
+#       string "DIR[ DIR]" will be appended to VARIABLE
+# "DIRP[:DIRP]::[DIRA:]DIRA"
+#       string "DIRP[ DIRP]" will be prepended to VARIABLE and string
+#       "DIRA[ DIRA]" will be appended to VARIABLE
+# "DIR[:DIR]"
+#       VARIABLE will be replaced by "DIR[ DIR]"
+func_munge_path_list ()
+{
+    case x@S|@2 in
+    x)
+        ;;
+    *:)
+        eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\"
+        ;;
+    x:*)
+        eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\"
+        ;;
+    *::*)
+        eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ 
/g'`\"
+        eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ 
\@S|@@S|@1\"
+        ;;
+    *)
+        eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\"
+        ;;
+    esac
+}
+]])# _LT_PREPARE_PATH_LIST
+
+
 # _LT_SYS_DYNAMIC_LINKER([TAG])
 # -----------------------------
 # PORTME Fill in your ld.so characteristics
@@ -2212,6 +2284,7 @@ m4_require([_LT_FILEUTILS_DEFAULTS])dnl
 m4_require([_LT_DECL_OBJDUMP])dnl
 m4_require([_LT_DECL_SED])dnl
 m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl
 AC_MSG_CHECKING([dynamic linker characteristics])
 m4_if([$1],
        [], [
@@ -2306,6 +2379,9 @@ hardcode_into_libs=no
 # flags to be left without arguments
 need_version=unknown
 
+AC_ARG_VAR([LT_SYS_LIBRARY_PATH],
+[User-defined run-time library search path.])
+
 case $host_os in
 aix3*)
   version_type=linux # correct to gnu/linux during the next big refactor
@@ -2594,6 +2670,7 @@ freebsd* | dragonfly*)
   case $version_type in
     freebsd-elf*)
       library_names_spec='$libname$release$shared_ext$versuffix 
$libname$release$shared_ext$major $libname$shared_ext'
+      soname_spec='$libname$release$shared_ext$major'
       need_version=no
       need_lib_prefix=no
       ;;
@@ -2653,10 +2730,11 @@ hpux9* | hpux10* | hpux11*)
     soname_spec='$libname$release$shared_ext$major'
     if test 32 = "$HPUX_IA64_MODE"; then
       sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 
/usr/local/lib"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux32
     else
       sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+      sys_lib_dlsearch_path_spec=/usr/lib/hpux64
     fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
     ;;
   hppa*64*)
     shrext_cmds='.sl'
@@ -2789,7 +2867,12 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   # before this can be enabled.
   hardcode_into_libs=yes
 
-  # Append ld.so.conf contents to the search path
+  # Ideally, we could use ldconfig to report *all* directores which are
+  # searched for libraries, however this is still not possible.  Aside from not
+  # being certain /sbin/ldconfig is available, command
+  # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64,
+  # even though it is searched at run-time.  Try to do the best guess by
+  # appending ld.so.conf contents (and includes) to the search path.
   if test -f /etc/ld.so.conf; then
     lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 
2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < 
/etc/ld.so.conf | $SED -e 's/#.*//;/^[  ]*hwcap[        ]/d;s/[:,      ]/ 
/g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
     sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
@@ -3013,10 +3096,20 @@ fi
 if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then
   sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec
 fi
+
 if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then
   sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec
 fi
 
+# remember unaugmented sys_lib_dlsearch_path content for libtool script 
decls...
+configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec
+
+# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code
+func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH"
+
+# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool
+configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
+
 _LT_DECL([], [variables_saved_for_relink], [1],
     [Variables whose values should be saved in libtool wrapper scripts and
     restored at link time])
@@ -3049,8 +3142,10 @@ _LT_DECL([], [hardcode_into_libs], [0],
     [Whether we should hardcode library paths into libraries])
 _LT_DECL([], [sys_lib_search_path_spec], [2],
     [Compile-time system search path for libraries])
-_LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
-    [Run-time system search path for libraries])
+_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2],
+    [Detected run-time system search path for libraries])
+_LT_DECL([], [configure_time_lt_sys_library_path], [2],
+    [Explicit LT_SYS_LIBRARY_PATH set during ./configure time])
 ])# _LT_SYS_DYNAMIC_LINKER
 
 
@@ -7350,6 +7445,7 @@ func_stripname_cnf ()
 } # func_stripname_cnf
 ])# _LT_FUNC_STRIPNAME_CNF
 
+
 # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
 # ---------------------------------
 # Figure out "hidden" library dependencies from verbose
@@ -7528,51 +7624,6 @@ interix[[3-9]]*)
   _LT_TAGVAR(postdep_objects,$1)=
   _LT_TAGVAR(postdeps,$1)=
   ;;
-
-linux*)
-  case `$CC -V 2>&1 | sed 5q` in
-  *Sun\ C*)
-    # Sun C++ 5.9
-
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    if test yes != "$solaris_use_stlport4"; then
-      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
-
-solaris*)
-  case $cc_basename in
-  CC* | sunCC*)
-    # The more standards-conforming stlport4 library is
-    # incompatible with the Cstd library. Avoid specifying
-    # it if it's in CXXFLAGS. Ignore libCrun as
-    # -library=stlport4 depends on it.
-    case " $CXX $CXXFLAGS " in
-    *" -library=stlport4 "*)
-      solaris_use_stlport4=yes
-      ;;
-    esac
-
-    # Adding this requires a known-good setup of shared libraries for
-    # Sun compiler versions before 5.6, else PIC objects from an old
-    # archive will be linked into the output, leading to subtle bugs.
-    if test yes != "$solaris_use_stlport4"; then
-      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
-    fi
-    ;;
-  esac
-  ;;
 esac
 ])
 
diff --git a/macros/ltoptions.m4 b/macros/ltoptions.m4
index f51ec8c..94b0829 100644
--- a/macros/ltoptions.m4
+++ b/macros/ltoptions.m4
@@ -1,6 +1,6 @@
 # Helper functions for option handling.                    -*- Autoconf -*-
 #
-#   Copyright (C) 2004-2005, 2007-2009, 2011-2014 Free Software
+#   Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software
 #   Foundation, Inc.
 #   Written by Gary V. Vaughan, 2004
 #
diff --git a/macros/ltsugar.m4 b/macros/ltsugar.m4
index da4ac6b..48bc934 100644
--- a/macros/ltsugar.m4
+++ b/macros/ltsugar.m4
@@ -1,6 +1,6 @@
 # ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
 #
-# Copyright (C) 2004-2005, 2007-2008, 2011-2014 Free Software
+# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software
 # Foundation, Inc.
 # Written by Gary V. Vaughan, 2004
 #
diff --git a/macros/ltversion.m4 b/macros/ltversion.m4
index cb6da68..fa04b52 100644
--- a/macros/ltversion.m4
+++ b/macros/ltversion.m4
@@ -1,6 +1,6 @@
 # ltversion.m4 -- version numbers                      -*- Autoconf -*-
 #
-#   Copyright (C) 2004, 2011-2014 Free Software Foundation, Inc.
+#   Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc.
 #   Written by Scott James Remnant, 2004
 #
 # This file is free software; the Free Software Foundation gives
@@ -9,15 +9,15 @@
 
 # @configure_input@
 
-# serial 4151 ltversion.m4
+# serial 4179 ltversion.m4
 # This file is part of GNU Libtool
 
-m4_define([LT_PACKAGE_VERSION], [2.4.4])
-m4_define([LT_PACKAGE_REVISION], [2.4.4])
+m4_define([LT_PACKAGE_VERSION], [2.4.6])
+m4_define([LT_PACKAGE_REVISION], [2.4.6])
 
 AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.4.4'
-macro_revision='2.4.4'
+[macro_version='2.4.6'
+macro_revision='2.4.6'
 _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
 _LT_DECL(, macro_revision, 0)
 ])
diff --git a/macros/lt~obsolete.m4 b/macros/lt~obsolete.m4
index 6975098..c6b26f8 100644
--- a/macros/lt~obsolete.m4
+++ b/macros/lt~obsolete.m4
@@ -1,6 +1,6 @@
 # lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
 #
-#   Copyright (C) 2004-2005, 2007, 2009, 2011-2014 Free Software
+#   Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software
 #   Foundation, Inc.
 #   Written by Scott James Remnant, 2004.
 #
diff --git a/postgis/geography_btree.c b/postgis/geography_btree.c
index 357398a..b42e1b5 100644
--- a/postgis/geography_btree.c
+++ b/postgis/geography_btree.c
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: geography_btree.c 9324 2012-02-27 22:08:12Z pramsey $
+ * $Id: geography_btree.c 13436 2015-04-23 18:19:47Z pramsey $
  *
  * PostGIS - Spatial Types for PostgreSQL
  * Copyright 2009 Paul Ramsey <pram...@cleverelephant.ca>
@@ -241,7 +241,7 @@ Datum geography_cmp(PG_FUNCTION_ARGS)
 
        /* Must be able to build box for each argument (ie, not empty geometry) 
*/
        if ( ! gserialized_datum_get_gidx_p(PG_GETARG_DATUM(0), gbox1) ||
-               ! gserialized_datum_get_gidx_p(PG_GETARG_DATUM(1), gbox2) )
+            ! gserialized_datum_get_gidx_p(PG_GETARG_DATUM(1), gbox2) )
        {
                PG_RETURN_BOOL(FALSE);
        }
@@ -249,13 +249,33 @@ Datum geography_cmp(PG_FUNCTION_ARGS)
        geography_gidx_center(gbox1, &p1);
        geography_gidx_center(gbox2, &p2);
 
-       if ( p1.x > p2.x && p1.y > p2.y && p1.z > p2.z )
+       if  ( ! FP_EQUALS(p1.x, p2.x) )
+       {
+               if  (p1.x < p2.x)
+               {
+                       PG_RETURN_INT32(-1);
+               }
                PG_RETURN_INT32(1);
+       }
 
-       if ( FP_EQUALS(p1.x, p2.x) && FP_EQUALS(p1.y, p2.y) && FP_EQUALS(p1.z, 
p2.z) )
-               PG_RETURN_INT32(0);
+       if  ( ! FP_EQUALS(p1.y, p2.y) )
+       {
+               if  (p1.y < p2.y)
+               {
+                       PG_RETURN_INT32(-1);
+               }
+               PG_RETURN_INT32(1);
+       }
 
-       PG_RETURN_INT32(-1);
+       if  ( ! FP_EQUALS(p1.z, p2.z) )
+       {
+               if  (p1.z < p2.z)
+               {
+                       PG_RETURN_INT32(-1);
+               }
+               PG_RETURN_INT32(1);
+       }
 
+       PG_RETURN_INT32(0);
 }
 
diff --git a/postgis/geography_inout.c b/postgis/geography_inout.c
index 3315dfe..c6a8c1e 100644
--- a/postgis/geography_inout.c
+++ b/postgis/geography_inout.c
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: geography_inout.c 13368 2015-03-20 14:06:44Z pramsey $
+ * $Id: geography_inout.c 13659 2015-06-11 19:47:14Z strk $
  *
  * PostGIS - Spatial Types for PostgreSQL
  * Copyright 2009-2011 Paul Ramsey <pram...@cleverelephant.ca>
@@ -598,9 +598,11 @@ Datum geography_from_geometry(PG_FUNCTION_ARGS)
        ** functions do the right thing.
        */
        lwgeom_set_geodetic(lwgeom, true);
+       
        /* Recalculate the boxes after re-setting the geodetic bit */
        lwgeom_drop_bbox(lwgeom);
        lwgeom_add_bbox(lwgeom);
+       
        g_ser = geography_serialize(lwgeom);
 
        /*
diff --git a/postgis/lwgeom_accum.c b/postgis/lwgeom_accum.c
index 0aecda7..1beb0b0 100644
--- a/postgis/lwgeom_accum.c
+++ b/postgis/lwgeom_accum.c
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: lwgeom_accum.c 13134 2014-12-01 08:47:21Z strk $
+ * $Id: lwgeom_accum.c 13525 2015-05-19 17:38:43Z pramsey $
  *
  * PostGIS - Spatial Types for PostgreSQL
  * http://postgis.net
@@ -105,15 +105,10 @@ pgis_geometry_accum_transfn(PG_FUNCTION_ARGS)
                        (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                         errmsg("could not determine input data type")));
 
-       if (fcinfo->context && IsA(fcinfo->context, AggState))
-               aggcontext = ((AggState *) fcinfo->context)->aggcontext;
-       else if (fcinfo->context && IsA(fcinfo->context, WindowAggState))
-               aggcontext = ((WindowAggState *) fcinfo->context)->aggcontext;
-
-       else
+       if ( ! AggCheckCallContext(fcinfo, &aggcontext) )
        {
                /* cannot be called directly because of dummy-type argument */
-               elog(ERROR, "array_agg_transfn called in non-aggregate 
context");
+               elog(ERROR, "%s called in non-aggregate context", __func__);
                aggcontext = NULL;  /* keep compiler quiet */
        }
 
diff --git a/postgis/lwgeom_export.c b/postgis/lwgeom_export.c
index 72abf7a..ab4d8e5 100644
--- a/postgis/lwgeom_export.c
+++ b/postgis/lwgeom_export.c
@@ -112,8 +112,12 @@ int getSRIDbySRS(const char* srs)
                SPI_finish();
                return 0;
        }
-       sprintf(query, "SELECT srid \
-               FROM spatial_ref_sys WHERE auth_name||':'||auth_srid = '%s'", 
srs);
+
+       sprintf(query, 
+               "SELECT srid "
+               "FROM spatial_ref_sys, "
+               "regexp_matches('%s', E'([a-z]+):([0-9]+)', 'gi') AS re "
+               "WHERE re[1] ILIKE auth_name AND int4(re[2]) = auth_srid", srs);
 
        err = SPI_exec(query, 1);
        if ( err < 0 )
@@ -126,9 +130,11 @@ int getSRIDbySRS(const char* srs)
        /* no entry in spatial_ref_sys */
        if (SPI_processed <= 0)
        {
-               sprintf(query, "SELECT srid \
-                       FROM spatial_ref_sys WHERE \
-                       'urn:ogc:def:crs:'||auth_name||'::'||auth_srid = '%s'", 
srs);
+               sprintf(query, 
+                       "SELECT srid "
+                       "FROM spatial_ref_sys, "
+                       "regexp_matches('%s', 
E'urn:ogc:def:crs:([a-z]+):.*:([0-9]+)', 'gi') AS re "
+                       "WHERE re[1] ILIKE auth_name AND int4(re[2]) = 
auth_srid", srs);
 
                err = SPI_exec(query, 1);
                if ( err < 0 )
@@ -176,8 +182,10 @@ Datum LWGEOM_asGML(PG_FUNCTION_ARGS)
        static const char* default_prefix = "gml:"; /* default prefix */
        const char* prefix = default_prefix;
        const char* gml_id = NULL;
-       char *prefix_buf, *gml_id_buf;
+       size_t len;
+       char *gml_id_buf, *prefix_buf;
        text *prefix_text, *gml_id_text;
+       
 
        /* Get the version */
        version = PG_GETARG_INT32(0);
@@ -209,19 +217,18 @@ Datum LWGEOM_asGML(PG_FUNCTION_ARGS)
        if (PG_NARGS() >4 && !PG_ARGISNULL(4))
        {
                prefix_text = PG_GETARG_TEXT_P(4);
-               if ( VARSIZE(prefix_text)-VARHDRSZ == 0 )
+               if ( VARSIZE(prefix_text) == VARHDRSZ )
                {
                        prefix = "";
                }
                else
                {
-                       /* +2 is one for the ':' and one for term null */
-                       prefix_buf = palloc(VARSIZE(prefix_text)-VARHDRSZ+2);
-                       memcpy(prefix_buf, VARDATA(prefix_text),
-                              VARSIZE(prefix_text)-VARHDRSZ);
+                       len = VARSIZE(prefix_text)-VARHDRSZ;
+                       prefix_buf = palloc(len + 2); /* +2 is one for the ':' 
and one for term null */
+                       memcpy(prefix_buf, VARDATA(prefix_text), len);
                        /* add colon and null terminate */
-                       prefix_buf[VARSIZE(prefix_text)-VARHDRSZ] = ':';
-                       prefix_buf[VARSIZE(prefix_text)-VARHDRSZ+1] = '\0';
+                       prefix_buf[len] = ':';
+                       prefix_buf[len+1] = '\0';
                        prefix = prefix_buf;
                }
        }
@@ -229,15 +236,16 @@ Datum LWGEOM_asGML(PG_FUNCTION_ARGS)
        if (PG_NARGS() >5 && !PG_ARGISNULL(5))
        {
                gml_id_text = PG_GETARG_TEXT_P(5);
-               if ( VARSIZE(gml_id_text)-VARHDRSZ == 0 )
+               if ( VARSIZE(gml_id_text) == VARHDRSZ )
                {
                        gml_id = "";
                }
                else
                {
-                       gml_id_buf = palloc(VARSIZE(gml_id_text)-VARHDRSZ+1);
-                       memcpy(gml_id_buf, VARDATA(gml_id_text), 
VARSIZE(gml_id_text)-VARHDRSZ);
-                       gml_id_buf[VARSIZE(gml_id_text)-VARHDRSZ+1] = '\0';
+                       len = VARSIZE(gml_id_text)-VARHDRSZ;
+                       gml_id_buf = palloc(len+1);
+                       memcpy(gml_id_buf, VARDATA(gml_id_text), len);
+                       gml_id_buf[len] = '\0';
                        gml_id = gml_id_buf;
                }
        }
diff --git a/postgis/lwgeom_functions_basic.c b/postgis/lwgeom_functions_basic.c
index 55f47b6..7debad8 100644
--- a/postgis/lwgeom_functions_basic.c
+++ b/postgis/lwgeom_functions_basic.c
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: lwgeom_functions_basic.c 13371 2015-03-20 15:32:06Z pramsey $
+ * $Id: lwgeom_functions_basic.c 13659 2015-06-11 19:47:14Z strk $
  *
  * PostGIS - Spatial Types for PostgreSQL
  * http://postgis.net
@@ -2540,8 +2540,11 @@ Datum LWGEOM_affine(PG_FUNCTION_ARGS)
        lwgeom_affine(lwgeom, &affine);
 
        /* COMPUTE_BBOX TAINTING */
-       lwgeom_drop_bbox(lwgeom);
-       lwgeom_add_bbox(lwgeom);
+       if ( lwgeom->bbox )
+       {
+               lwgeom_drop_bbox(lwgeom);
+               lwgeom_add_bbox(lwgeom);
+       }
        ret = geometry_serialize(lwgeom);
 
        /* Release memory */
diff --git a/postgis/postgis.sql.in b/postgis/postgis.sql.in
index e27340d..0590591 100644
--- a/postgis/postgis.sql.in
+++ b/postgis/postgis.sql.in
@@ -1,6 +1,6 @@
 -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 --
--- $Id: postgis.sql.in 13299 2015-03-03 13:04:21Z strk $
+-- $Id: postgis.sql.in 13462 2015-04-29 20:03:05Z robe $
 --
 -- PostGIS - Spatial Types for PostgreSQL
 -- http://postgis.net
@@ -2434,35 +2434,23 @@ LANGUAGE 'plpgsql' VOLATILE STRICT;
 -----------------------------------------------------------------------
 -- FIND_SRID( <schema>, <table>, <geom col> )
 -----------------------------------------------------------------------
+-- Changed: 2.1.8 improve performance
 CREATE OR REPLACE FUNCTION find_srid(varchar,varchar,varchar) RETURNS int4 AS
 $$
 DECLARE
-       schem text;
-       tabl text;
+       schem varchar =  $1;
+       tabl varchar = $2;
        sr int4;
 BEGIN
-       IF $1 IS NULL THEN
-         RAISE EXCEPTION 'find_srid() - schema is NULL!';
-       END IF;
-       IF $2 IS NULL THEN
-         RAISE EXCEPTION 'find_srid() - table name is NULL!';
-       END IF;
-       IF $3 IS NULL THEN
-         RAISE EXCEPTION 'find_srid() - column name is NULL!';
-       END IF;
-       schem = $1;
-       tabl = $2;
 -- if the table contains a . and the schema is empty
 -- split the table into a schema and a table
 -- otherwise drop through to default behavior
-       IF ( schem = '' and tabl LIKE '%.%' ) THEN
+       IF ( schem = '' and strpos(tabl,'.') > 0 ) THEN
         schem = substr(tabl,1,strpos(tabl,'.')-1);
         tabl = substr(tabl,length(schem)+2);
-       ELSE
-        schem = schem || '%';
        END IF;
 
-       select SRID into sr from geometry_columns where f_table_schema like 
schem and f_table_name = tabl and f_geometry_column = $3;
+       select SRID into sr from geometry_columns where (f_table_schema = schem 
or schem = '') and f_table_name = tabl and f_geometry_column = $3;
        IF NOT FOUND THEN
           RAISE EXCEPTION 'find_srid() - couldnt find the corresponding SRID - 
is the geometry registered in the GEOMETRY_COLUMNS table?  Is there an 
uppercase/lowercase missmatch?';
        END IF;
@@ -2472,6 +2460,7 @@ $$
 LANGUAGE 'plpgsql' IMMUTABLE STRICT;
 
 
+
 ---------------------------------------------------------------
 -- PROJ support
 ---------------------------------------------------------------
@@ -4696,38 +4685,46 @@ SELECT  replace(split_part(s.consrc, '''', 2), ')', 
'')::varchar
 $$
 LANGUAGE 'sql' STABLE STRICT;
 
+-- Availability: 2.0.0
+-- Changed: 2.1.8 significant performance improvement for constraint based 
columns
 CREATE OR REPLACE VIEW geometry_columns AS 
-  SELECT current_database()::varchar(256) AS f_table_catalog, 
-    n.nspname::varchar(256) AS f_table_schema, 
-    c.relname::varchar(256) AS f_table_name, 
-    a.attname::varchar(256) AS f_geometry_column, 
-    COALESCE(postgis_typmod_dims(a.atttypmod),
-             postgis_constraint_dims(n.nspname, c.relname, a.attname),
-             2) AS coord_dimension, -- should it be 0 instead ?
-    COALESCE(NULLIF(postgis_typmod_srid(a.atttypmod),0),
-             postgis_constraint_srid(n.nspname, c.relname, a.attname),
-             0) AS srid, 
-    -- force to be uppercase with no ZM so is backwards compatible
-    -- with old geometry_columns
-    replace(
-      replace(
-        COALESCE(
-          NULLIF(upper(postgis_typmod_type(a.atttypmod)::text), 'GEOMETRY'),
-          postgis_constraint_type(n.nspname, c.relname, a.attname),
-          'GEOMETRY'
-        ), 'ZM', ''
-      ), 'Z', ''
-    )::varchar(30) AS type
-  FROM pg_class c, pg_attribute a, pg_type t, pg_namespace n
-  WHERE t.typname = 'geometry'::name 
-    AND a.attisdropped = false 
-    AND a.atttypid = t.oid 
-    AND a.attrelid = c.oid 
-    AND c.relnamespace = n.oid 
-    AND (c.relkind = 'r'::"char" OR c.relkind = 'v'::"char" OR c.relkind = 
'm'::"char" OR c.relkind = 'f'::"char")
-    AND NOT pg_is_other_temp_schema(c.relnamespace)
-    AND NOT ( n.nspname = 'public' AND c.relname = 'raster_columns' )
-    AND has_table_privilege( c.oid, 'SELECT'::text );
+ SELECT current_database()::character varying(256) AS f_table_catalog,
+-- TODO: consider getting rid of CASTING it slows things down by 2 to 6 fold 
for table/column exact matches.  
+--      Geography doesn't have casting by the way
+    n.nspname::varchar(256) AS f_table_schema,
+    c.relname::varchar(256) AS f_table_name,
+    a.attname::varchar(256) AS f_geometry_column,
+    COALESCE(postgis_typmod_dims(a.atttypmod), sn.ndims, 2) AS coord_dimension,
+    COALESCE(NULLIF(postgis_typmod_srid(a.atttypmod), 0), sr.srid, 0) AS srid,
+    replace(replace(COALESCE(NULLIF(upper(postgis_typmod_type(a.atttypmod)), 
'GEOMETRY'::text), st.type, 'GEOMETRY'::text), 'ZM'::text, ''::text), 
'Z'::text, ''::text)::character varying(30) AS type
+   FROM pg_class c
+     JOIN pg_attribute a ON a.attrelid = c.oid AND NOT a.attisdropped
+     JOIN pg_namespace n ON c.relnamespace = n.oid
+     JOIN pg_type t ON a.atttypid = t.oid
+     LEFT JOIN ( SELECT s.connamespace,
+            s.conrelid,
+            s.conkey, replace(split_part(s.consrc, ''''::text, 2), ')'::text, 
''::text) As type
+           FROM pg_constraint AS s
+          WHERE s.consrc ~~* '%geometrytype(% = %'::text 
+          
+) st ON st.connamespace = n.oid AND st.conrelid = c.oid AND (a.attnum = ANY 
(st.conkey))
+     LEFT JOIN ( SELECT s.connamespace,
+            s.conrelid,
+            s.conkey, replace(split_part(s.consrc, ' = '::text, 2), ')'::text, 
''::text)::integer As ndims
+           FROM pg_constraint AS s
+          WHERE s.consrc ~~* '%ndims(% = %'::text
+          
+) sn ON sn.connamespace = n.oid AND sn.conrelid = c.oid AND (a.attnum = ANY 
(sn.conkey))
+     LEFT JOIN ( SELECT s.connamespace,
+            s.conrelid,
+            s.conkey, replace(replace(split_part(s.consrc, ' = '::text, 2), 
')'::text, ''::text), '('::text, ''::text)::integer As srid
+           FROM pg_constraint AS s
+          WHERE s.consrc ~~* '%srid(% = %'::text
+          
+) sr ON sr.connamespace = n.oid AND sr.conrelid = c.oid AND (a.attnum = ANY 
(sr.conkey))
+  WHERE (c.relkind = ANY (ARRAY['r'::"char", 'v'::"char", 'm'::"char", 
'f'::"char"])) 
+  AND NOT c.relname = 'raster_columns'::name AND t.typname = 'geometry'::name 
+  AND NOT pg_is_other_temp_schema(c.relnamespace) AND 
has_table_privilege(c.oid, 'SELECT'::text);
 
 -- TODO: support RETURNING and raise a WARNING
 CREATE OR REPLACE RULE geometry_columns_insert AS
diff --git a/postgis/sqldefines.h b/postgis/sqldefines.h
index 1902b06..7848165 100644
--- a/postgis/sqldefines.h
+++ b/postgis/sqldefines.h
@@ -8,8 +8,8 @@
  */
 #define POSTGIS_PGSQL_VERSION 93
 #define POSTGIS_GEOS_VERSION 35
-#define POSTGIS_PROJ_VERSION 48
-#define POSTGIS_LIB_VERSION '2.1.7'
+#define POSTGIS_PROJ_VERSION 49
+#define POSTGIS_LIB_VERSION '2.1.8'
 #define POSTGIS_LIBXML2_VERSION 2.9.2
 
 /*
@@ -18,12 +18,12 @@
  * won't substitute within apostrophes)
  */
 #define _POSTGIS_SQL_SELECT_POSTGIS_VERSION 'SELECT ''2.1 USE_GEOS=1 
USE_PROJ=1 USE_STATS=1''::text AS version'
-#define _POSTGIS_SQL_SELECT_POSTGIS_BUILD_DATE 'SELECT ''2015-03-30 
12:54:40''::text AS version'
+#define _POSTGIS_SQL_SELECT_POSTGIS_BUILD_DATE 'SELECT ''2015-07-07 
13:50:01''::text AS version'
 
 #if POSTGIS_SVN_REVISION
-#define _POSTGIS_SQL_SELECT_POSTGIS_SCRIPTS_VERSION $$ SELECT '2.1.7'::text || 
' r' || POSTGIS_SVN_REVISION::text AS version $$
+#define _POSTGIS_SQL_SELECT_POSTGIS_SCRIPTS_VERSION $$ SELECT '2.1.8'::text || 
' r' || POSTGIS_SVN_REVISION::text AS version $$
 #else
-#define _POSTGIS_SQL_SELECT_POSTGIS_SCRIPTS_VERSION $$ SELECT '2.1.7'::text AS 
version $$
+#define _POSTGIS_SQL_SELECT_POSTGIS_SCRIPTS_VERSION $$ SELECT '2.1.8'::text AS 
version $$
 #endif
 
 #define SRID_USR_MAX 998999
diff --git a/postgis_svn_revision.h b/postgis_svn_revision.h
index 1564b5a..a1fedf4 100644
--- a/postgis_svn_revision.h
+++ b/postgis_svn_revision.h
@@ -1 +1 @@
-#define POSTGIS_SVN_REVISION 13414
+#define POSTGIS_SVN_REVISION 13780
diff --git a/raster/test/regress/tickets.sql b/raster/test/regress/tickets.sql
index 398c61c..33ef7c9 100644
--- a/raster/test/regress/tickets.sql
+++ b/raster/test/regress/tickets.sql
@@ -16,3 +16,87 @@ WITH data AS ( SELECT '#2911' l, ST_Metadata(ST_Rescale(
  -2.0
  )) m
 ) SELECT l, (m).* FROM data;
+
+-- #3006
+SET client_min_messages TO ERROR;
+
+DROP TABLE IF EXISTS test_raster_scale_regular;
+CREATE TABLE test_raster_scale_regular (
+       rid integer,
+       rast raster
+);
+
+DROP TABLE IF EXISTS test_raster_scale_big;
+CREATE TABLE test_raster_scale_big (
+       rid integer,
+       rast raster
+);
+
+DROP TABLE IF EXISTS test_raster_scale_small;
+CREATE TABLE test_raster_scale_small (
+       rid integer,
+       rast raster
+);
+
+
+CREATE OR REPLACE FUNCTION make_test_raster(
+       table_suffix text,
+       rid integer,
+  scale_x double precision,
+  scale_y double precision DEFAULT 1.0
+)
+RETURNS void
+AS $$
+DECLARE
+       rast raster;
+       width integer := 2;
+       height integer := 2;
+       ul_x double precision := 0;
+       ul_y double precision := 0;
+       skew_x double precision := 0;
+       skew_y double precision := 0;
+       initvalue double precision := 1;
+       nodataval double precision := 0;
+BEGIN
+       rast := ST_MakeEmptyRaster(width, height, ul_x, ul_y, scale_x, scale_y, 
skew_x, skew_y, 0);
+       rast := ST_AddBand(rast, 1, '8BUI', initvalue, nodataval);
+
+       EXECUTE 'INSERT INTO test_raster_scale_' || table_suffix || ' VALUES 
($1, $2)' USING rid, rast;
+       RETURN;
+END;
+$$ LANGUAGE 'plpgsql';
+
+SELECT make_test_raster('regular', 0, 1);
+SELECT make_test_raster('regular', 1, 1.0000001);
+SELECT make_test_raster('regular', 2, 0.9999999);
+SELECT AddRasterConstraints('test_raster_scale_regular'::name, 'rast'::name, 
'scale_x', 'scale_y');
+SELECT r_table_name, r_raster_column, scale_x, scale_y FROM raster_columns
+       WHERE  r_raster_column = 'rast' AND r_table_name = 
'test_raster_scale_regular';
+
+-- Issues enforce_scalex_rast constraint violation
+SELECT make_test_raster('regular', 3, 1.001, 0.9999999);
+
+SELECT make_test_raster('big', 0, -12345678901234.0);
+SELECT AddRasterConstraints('test_raster_scale_big'::name, 'rast'::name, 
'scale_x', 'scale_y');
+SELECT r_table_name, r_raster_column, scale_x, scale_y FROM raster_columns
+  WHERE  r_raster_column = 'rast' AND r_table_name = 'test_raster_scale_big';
+
+-- Issues enforce_scalex_rast constraint violation
+SELECT make_test_raster('big', 1, -123456789012345.0);
+
+SELECT make_test_raster('small', 0, 0.00001);
+SELECT make_test_raster('small', 1, 0.000011);
+SELECT make_test_raster('small', 2, 0.00000999);
+SELECT AddRasterConstraints('test_raster_scale_small'::name, 'rast'::name, 
'scale_x', 'scale_y');
+SELECT r_table_name, r_raster_column, scale_x, scale_y FROM raster_columns
+  WHERE  r_raster_column = 'rast' AND r_table_name = 'test_raster_scale_small';
+
+-- Issues enforce_scaley_rast constraint violation
+SELECT make_test_raster('small', 3, 0.00001, 1.00001);
+
+DROP FUNCTION make_test_raster(text, integer, double precision, double 
precision);
+DROP TABLE IF EXISTS test_raster_scale_regular;
+DROP TABLE IF EXISTS test_raster_scale_big;
+DROP TABLE IF EXISTS test_raster_scale_small;
+
+SET client_min_messages TO DEFAULT;
diff --git a/raster/test/regress/tickets_expected 
b/raster/test/regress/tickets_expected
index e00841e..4596f2a 100644
--- a/raster/test/regress/tickets_expected
+++ b/raster/test/regress/tickets_expected
@@ -3,3 +3,12 @@
 #2532.2|
 NOTICE:  Raster has default geotransform. Adjusting metadata for use of GDAL 
Warp API
 #2911|0|0|5|5|2|-2|0|0|0|1
+t
+test_raster_scale_regular|rast||1
+ERROR:  new row for relation "test_raster_scale_regular" violates check 
constraint "enforce_scaley_rast"
+t
+test_raster_scale_big|rast|-12345678901234|1
+ERROR:  new row for relation "test_raster_scale_big" violates check constraint 
"enforce_scalex_rast"
+t
+test_raster_scale_small|rast||1
+ERROR:  new row for relation "test_raster_scale_small" violates check 
constraint "enforce_scaley_rast"
diff --git a/regress/affine.sql b/regress/affine.sql
index 1d5ef09..3006389 100644
--- a/regress/affine.sql
+++ b/regress/affine.sql
@@ -48,6 +48,9 @@ select 'ST_TransScale', 
ST_asewkt(ST_snapToGrid(ST_TransScale('POINT(1 1)'::geom
 select 'ST_TransScale', ST_asewkt(ST_snapToGrid(ST_TransScale('POINT(1 
1)'::geometry,2, 3, 5, 7), 0.1));
 select 'ST_TransScale', ST_asewkt(ST_snapToGrid(ST_TransScale('POINT(1 1 
1)'::geometry,2, 3, 5, 7), 0.1));
 
+-- https://trac.osgeo.org/postgis/ticket/3159
+select '#3159', st_summary(st_affine(st_makepoint(1,1),1,0,0,1,0,0));
+
 -- postgis-users/2006-May/012119.html
 select 'transl_bbox', box2d(ST_Translate('LINESTRING(0 0, 1 1)'::geometry, 1, 
0, 0));
 select 'ST_Scale_bbox', box2d(ST_Scale('LINESTRING(1 0, 2 1)'::geometry, 2, 
0));
diff --git a/regress/affine_expected b/regress/affine_expected
index 639d069..a185112 100644
--- a/regress/affine_expected
+++ b/regress/affine_expected
@@ -32,6 +32,7 @@ ST_TransScale|POINT(4 2)
 ST_TransScale|POINT(2 4)
 ST_TransScale|POINT(15 28)
 ST_TransScale|POINT(15 28 1)
+#3159|Point[]
 transl_bbox|BOX(1 0,2 1)
 ST_Scale_bbox|BOX(2 0,4 0)
 ST_Scale_bbox|BOX(3 1,4 2)
diff --git a/regress/in_geojson.sql b/regress/in_geojson.sql
index 23325e8..05c4a11 100644
--- a/regress/in_geojson.sql
+++ b/regress/in_geojson.sql
@@ -10,6 +10,12 @@ select 
'geomfromgeojson_06',st_astext(st_geomfromgeojson(st_asgeojson('MULTIPOLY
 select '#1434: Next two errors';
 select '#1434.1',ST_GeomFromGeoJSON('{ "type": "Point", "crashme": [100.0, 
0.0] }');
 select '#1434.2',ST_GeomFromGeoJSON('crashme');;
+select '#1434.3',ST_GeomFromGeoJSON('');
+select '#1434.4',ST_GeomFromGeoJSON('{}');
+select '#1434.5',ST_GeomFromGeoJSON('{"type":"Point","coordinates":[]}'); 
+select 
'#1434.6',ST_GeomFromGeoJSON('{"type":"MultiPoint","coordinates":[[]]}'); 
+select '#1434.7',ST_GeomFromGeoJSON('{"type":"MultiPoint"}'); 
+select '#1434.8',ST_GeomFromGeoJSON('{"type":"Point"}'); 
 
 -- #2130 --
 SELECT '#2130', 
ST_NPoints(ST_GeomFromGeoJSON('{"type":"MultiPolygon","coordinates":[[[[-117,32],[-117,32],[-117,32],[-117,32],[-117,32],[-117,32],[-117,32],[-117,32],[-117,32],[-117,32],[-117,32],[-117,32],[-117,32],[-117,33],[-117,33],[-117,33],[-117,33],[-117,33],[-117,33],[-117,33],[-117,33],[-117,33],[-117,33],[-117,33],[-117,33],[-117,32],[-117,32],[-117,32],[-117,32],[-116,32],[-116,32],[-116,32],[-116,32],[-116,32],[-116,32],[-116,32],[-116,32],[-116,32],[-116,32],[-117,32],[-117
 [...]
@@ -23,3 +29,13 @@ SELECT '#2619', 
ST_AsText(ST_GeomFromGeoJSON('{"type":"Polygon","bbox":[1,5,2,6]
 -- #2697 --
 SELECT '#2697', ST_GeomFromGeoJSON('{"type":"Polygon","coordinates":[1]}');
 SELECT '#2697', ST_GeomFromGeoJSON('{"type":"Polygon","coordinates":[1,1]}');
+
+-- FromGeoJSON 3D
+
+SELECT 'geomfromgeojson_z_01', 
ST_AsEWKT(ST_GeomFromGeoJSON('{"type":"Point","coordinates":[1,2,3]}'));
+SELECT 'geomfromgeojson_z_02', 
ST_AsEWKT(ST_GeomFromGeoJSON('{"type":"LineString","coordinates":[[1,2,3],[2,3,4]]}'));
+
+-- FromGeoJSON 4D
+
+SELECT 'geomfromgeojson_zm_01', 
ST_AsEWKT(ST_GeomFromGeoJSON('{"type":"Point","coordinates":[1,2,3,4]}'));
+SELECT 'geomfromgeojson_zm_02', 
ST_AsEWKT(ST_GeomFromGeoJSON('{"type":"LineString","coordinates":[[1,2,3,4],[2,3,4,5]]}'));
diff --git a/regress/in_geojson_expected b/regress/in_geojson_expected
index 3320f1e..dd64494 100644
--- a/regress/in_geojson_expected
+++ b/regress/in_geojson_expected
@@ -7,8 +7,18 @@ geomfromgeojson_06|MULTIPOLYGON(((0 0,1 1,1 0,0 0)))
 #1434: Next two errors
 ERROR:  Unable to find 'coordinates' in GeoJSON string
 ERROR:  unexpected character (at offset 0)
+ERROR:  unexpected end of data (at offset 0)
+ERROR:  invalid GeoJSON representation
+ERROR:  Too few ordinates in GeoJSON
+ERROR:  Too few ordinates in GeoJSON
+ERROR:  Unable to find 'coordinates' in GeoJSON string
+ERROR:  Unable to find 'coordinates' in GeoJSON string
 #2130|50
 #2216|30
 #2619|POLYGON EMPTY
 ERROR:  The 'coordinates' in GeoJSON ring are not an array
 ERROR:  The 'coordinates' in GeoJSON ring are not an array
+geomfromgeojson_z_01|POINT(1 2 3)
+geomfromgeojson_z_02|LINESTRING(1 2 3,2 3 4)
+geomfromgeojson_zm_01|POINT(1 2 3)
+geomfromgeojson_zm_02|LINESTRING(1 2 3,2 3 4)
diff --git a/regress/regress_lrs.sql b/regress/regress_lrs.sql
index 761af96..7663058 100644
--- a/regress/regress_lrs.sql
+++ b/regress/regress_lrs.sql
@@ -33,6 +33,7 @@ select 'line_locate_point_2', 
ST_LineLocatePoint(ST_geomfromtext('LINESTRING(-19
 select 'line_locate_point_3', 
ST_LineLocatePoint(ST_geomfromtext('LINESTRING(-1953743.873 
471070.784,-1953735.105 471075.419,-1953720.034 471081.649)', 6269), 
ST_geomfromtext('POINT(-1953743.873 471070.784)', 6269));
 --- http://trac.osgeo.org/postgis/ticket/1772#comment:2
 select 'line_locate_point_4', ST_LineLocatePoint('LINESTRING(0 1, 0 1, 0 1)', 
'POINT(0 1)');
+SELECT 'line_locate_point_5', ST_LineLocatePoint(ST_MakeLine('POINT(1 
2)'::geometry, 'POINT EMPTY'::geometry), ST_Point(-11,40));
 
 --- line_substring / line_interpolate_point
 
diff --git a/regress/regress_lrs_expected b/regress/regress_lrs_expected
index 83affb0..a20d29c 100644
--- a/regress/regress_lrs_expected
+++ b/regress/regress_lrs_expected
@@ -19,6 +19,7 @@ line_locate_point_1|0.528602749909894
 line_locate_point_2|1
 line_locate_point_3|0
 line_locate_point_4|0
+line_locate_point_5|0
 line_substring_1|4326|LINESTRING ZM (2 2 2 2,3 3 3 3,3.2 3.2 3.2 3.2)
 line_substring_2|LINESTRING ZM (2 2 2 2,3 3 3 3)
 line_substring_3|LINESTRING(0 0,1 1)

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

_______________________________________________
Pkg-grass-devel mailing list
Pkg-grass-devel@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-grass-devel

Reply via email to