From b41a7b1641251809f9cdbbf6794bf992bece1a55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Volker=20Fr=C3=B6hlich?= Date: Sat, 6 Dec 2014 03:28:35 +0100 Subject: [PATCH] Apply upstream changeset 27949 to prevent a crash when using sqlite 3.8.7 --- gdal-1.11.1-sqlite-crash.patch | 65 ++++++++++++++++++++++++++++++++++ gdal.spec | 9 ++++- 2 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 gdal-1.11.1-sqlite-crash.patch diff --git a/gdal-1.11.1-sqlite-crash.patch b/gdal-1.11.1-sqlite-crash.patch new file mode 100644 index 0000000..3e2b13f --- /dev/null +++ b/gdal-1.11.1-sqlite-crash.patch @@ -0,0 +1,65 @@ +Index: /trunk/gdal/ogr/ogrsf_frmts/sqlite/ogrsqlitevirtualogr.cpp +=================================================================== +--- /trunk/gdal/ogr/ogrsf_frmts/sqlite/ogrsqlitevirtualogr.cpp (revision 27942) ++++ /trunk/gdal/ogr/ogrsf_frmts/sqlite/ogrsqlitevirtualogr.cpp (revision 27949) +@@ -36,4 +36,23 @@ + #ifdef HAVE_SQLITE_VFS + ++/************************************************************************/ ++/* OGR2SQLITE_Register() */ ++/************************************************************************/ ++ ++CPL_C_START ++int CPL_DLL OGR2SQLITE_static_register (sqlite3* hDB, char **pzErrMsg, void* pApi); ++CPL_C_END ++ ++/* We call this function so that each time a db is created, */ ++/* OGR2SQLITE_static_register is called, to initialize the sqlite3_api */ ++/* structure with the right pointers. */ ++/* We need to declare this function before including sqlite3ext.h, since */ ++/* sqlite 3.8.7, sqlite3_auto_extension can be a macro (#5725) */ ++ ++void OGR2SQLITE_Register() ++{ ++ sqlite3_auto_extension ((void (*)(void)) OGR2SQLITE_static_register); ++} ++ + #define VIRTUAL_OGR_DYNAMIC_EXTENSION_ENABLED + //#define DEBUG_OGR2SQLITE +@@ -2403,16 +2422,11 @@ + /************************************************************************/ + +-CPL_C_START +-int CPL_DLL OGR2SQLITE_static_register (sqlite3 * hDB, char **pzErrMsg, +- const sqlite3_api_routines * pApi); +-CPL_C_END +- + #ifndef WIN32 + extern const struct sqlite3_api_routines OGRSQLITE_static_routines; + #endif + +-int OGR2SQLITE_static_register (sqlite3 * hDB, char **pzErrMsg, +- const sqlite3_api_routines * pApi) +-{ ++int OGR2SQLITE_static_register (sqlite3 * hDB, char **pzErrMsg, void * _pApi) ++{ ++ const sqlite3_api_routines * pApi = (const sqlite3_api_routines * )_pApi; + #ifndef WIN32 + if( pApi->create_module == NULL ) +@@ -2450,16 +2464,3 @@ + } + +-/************************************************************************/ +-/* OGR2SQLITE_Register() */ +-/************************************************************************/ +- +-/* We call this function so that each time a db is created, */ +-/* OGR2SQLITE_static_register is called, to initialize the sqlite3_api */ +-/* structure with the right pointers. */ +- +-void OGR2SQLITE_Register() +-{ +- sqlite3_auto_extension ((void (*)(void)) OGR2SQLITE_static_register); +-} +- + #endif // HAVE_SQLITE_VFS diff --git a/gdal.spec b/gdal.spec index f7f09b8..c1e7d11 100644 --- a/gdal.spec +++ b/gdal.spec @@ -41,7 +41,7 @@ Name: gdal Version: 1.11.1 -Release: 3%{?dist} +Release: 4%{?dist} Summary: GIS file format library Group: System Environment/Libraries License: MIT @@ -66,6 +66,9 @@ Patch2: %{name}-jni.patch # Fedora uses Alternatives for Java Patch8: %{name}-1.9.0-java.patch +# http://trac.osgeo.org/gdal/changeset/27949 +Patch9: %{name}-1.11.1-sqlite-crash.patch + BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: ant @@ -266,6 +269,7 @@ rm -r frmts/grib/degrib18/g2clib-1.0.4 %patch1 -p1 -b .g2clib~ %patch2 -p1 -b .jni~ %patch8 -p1 -b .java~ +%patch9 -p3 -b .sqlite~ # Copy in PROVENANCE.TXT-fedora cp -p %SOURCE4 . @@ -764,6 +768,9 @@ popd #Or as before, using ldconfig %changelog +* Sat Dec 6 2014 Volker Fröhlich - 1.11.1-4 +- Apply upstream changeset 27949 to prevent a crash when using sqlite 3.8.7 + * Tue Dec 2 2014 Jerry James - 1.11.1-3 - Don't try to install perllocal.pod (bz 1161231)