diff -ur cmis.org/src/libcmis/xml-utils.cxx cmis/src/libcmis/xml-utils.cxx --- cmis.org/src/libcmis/xml-utils.cxx 2016-12-09 02:19:47.900961750 +0100 +++ cmis/src/libcmis/xml-utils.cxx 2016-12-09 02:23:56.392206339 +0100 @@ -382,9 +382,14 @@ // Get the time zone offset boost::posix_time::time_duration tzOffset( boost::posix_time::duration_from_string( "+00:00" ) ); + if ( dateTimeStr.empty( ) ) + return t; // obviously not a time + size_t teePos = dateTimeStr.find( 'T' ); - string noTzStr = dateTimeStr.substr( 0, teePos + 1 ); + if ( teePos == string::npos ) + return t; // obviously not a time + string noTzStr = dateTimeStr.substr( 0, teePos + 1 ); string timeStr = dateTimeStr.substr( teePos + 1 ); // Get the TZ if any @@ -459,10 +459,9 @@ bool value = false; if ( boolStr == "true" || boolStr == "1" ) value = true; - else if ( boolStr == "false" || boolStr == "0" ) - value = false; else - throw Exception( string( "Invalid xsd:boolean input: " ) + boolStr ); + // treat everthing else, including absence of property, as 'false', not as an error + value = false; return value; }