From c33b82bd37d4b01574832a4b5fff8fc546c9dda8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Bosdonnat?= Date: Fri, 30 Aug 2013 14:06:09 +0200 Subject: [PATCH] libcmis: add a mandatory patch for GDrive feature to properly work Change-Id: I1bd183508b7f481feed641f8658c0baea6f743bd --- libcmis/UnpackedTarball_cmis.mk | 2 + libcmis/libcmis-0.4.1.patch | 95 ++++++++++++++++++++++++++++ ucb/source/ucp/cmis/cmis_content.cxx | 2 +- 3 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 libcmis/libcmis-0.4.1.patch diff --git a/libcmis/UnpackedTarball_cmis.mk b/libcmis/UnpackedTarball_cmis.mk index 57864742c62d..0b2a9fbc261d 100644 --- a/libcmis/UnpackedTarball_cmis.mk +++ b/libcmis/UnpackedTarball_cmis.mk @@ -13,6 +13,8 @@ $(eval $(call gb_UnpackedTarball_set_tarball,cmis,$(CMIS_TARBALL))) $(eval $(call gb_UnpackedTarball_set_patchlevel,cmis,0)) +$(eval $(call gb_UnpackedTarball_add_patches,cmis,libcmis/libcmis-0.4.1.patch)) + ifeq ($(OS)$(COM),WNTMSC) $(eval $(call gb_UnpackedTarball_add_patches,cmis,libcmis/boost-win.patch)) endif diff --git a/libcmis/libcmis-0.4.1.patch b/libcmis/libcmis-0.4.1.patch new file mode 100644 index 000000000000..214475fc575d --- /dev/null +++ b/libcmis/libcmis-0.4.1.patch @@ -0,0 +1,95 @@ +diff --git src/libcmis/json-utils.cxx src/libcmis/json-utils.cxx +index b537a09..b4e037d 100644 +--- src/libcmis/json-utils.cxx ++++ src/libcmis/json-utils.cxx +@@ -213,48 +213,54 @@ Json::Type Json::parseType( ) + { + Type type = json_string; + string str = toString( ); +- boost::posix_time::ptime time = libcmis::parseDateTime( str ); +- if ( !time.is_not_a_date_time( ) ) +- type = json_datetime; +- else ++ if ( str.empty( ) ) ++ return type; ++ try + { +- Type backupType = type; +- type = json_bool; +- try +- { +- parseBool( str ); +- } +- catch (...) ++ boost::posix_time::ptime time = libcmis::parseDateTime( str ); ++ if ( !time.is_not_a_date_time( ) ) ++ return json_datetime; ++ } ++ catch (...) ++ { ++ // Try other types ++ } ++ Type backupType = type; ++ type = json_bool; ++ try ++ { ++ parseBool( str ); ++ } ++ catch (...) ++ { ++ type = backupType; ++ } ++ if ( type != json_bool ) ++ { ++ if ( str.find('.') == string::npos ) + { +- type = backupType; ++ backupType = type; ++ type = json_int; ++ try ++ { ++ parseInteger( str ); ++ } ++ catch(...) ++ { ++ type = backupType; ++ } + } +- if ( type != json_bool ) ++ else + { +- if ( str.find('.') == string::npos ) ++ backupType = type; ++ type = json_double; ++ try + { +- backupType = type; +- type = json_int; +- try +- { +- parseInteger( str ); +- } +- catch(...) +- { +- type = backupType; +- } ++ parseDouble( str ); + } +- else +- { +- backupType = type; +- type = json_double; +- try +- { +- parseDouble( str ); +- } +- catch(...) +- { +- type = backupType; +- } ++ catch(...) ++ { ++ type = backupType; + } + } + } diff --git a/ucb/source/ucp/cmis/cmis_content.cxx b/ucb/source/ucp/cmis/cmis_content.cxx index e6d213d6fe56..1ba5a86451db 100644 --- a/ucb/source/ucp/cmis/cmis_content.cxx +++ b/ucb/source/ucp/cmis/cmis_content.cxx @@ -171,7 +171,7 @@ namespace bool bMultiValued = prop.MultiValued; bool bOpenChoice = prop.OpenChoice; uno::Any value = prop.Value; - libcmis::PropertyType::Type type; + libcmis::PropertyType::Type type = libcmis::PropertyType::String; if ( prop.Type == CMIS_TYPE_STRING ) type = libcmis::PropertyType::String; else if ( prop.Type == CMIS_TYPE_BOOL )