--- ucb/source/ucp/gvfs/content.cxx	2007-07-19 18:08:13.000000000 +0200
+++ ucb/source/ucp/gvfs/content.cxx	2007-07-19 19:50:21.000000000 +0200
@@ -684,16 +684,29 @@ uno::Reference< sdbc::XRow > Content::ge
 		if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "SupportsActiveStreaming" ) ) ) {
 			xRow->appendBoolean( rProp, sal_True );
 		}
-		else if (result != GNOME_VFS_OK) {
+		else if (result != GNOME_VFS_OK && result != GNOME_VFS_ERROR_PROTOCOL_ERROR) {
 			// 'SupportsActiveStreaming' is the only property that can be
 			// obtained even if getInfo() failed
+			// We ignore protocol errors - happens eg. for broken links over sftp:// :-(
 			cancelCommandExecution( result, xEnv, sal_False );
 		}
 		else if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Title" ) ) ) {
 			if (m_info.name && m_info.name[0] == '/')
 				g_warning ("Odd NFS title on item '%s' == '%s'",
 					   getURI(), m_info.name);
-			xRow->appendString( rProp, GnomeToOUString( m_info.name ) );
+
+			if (result != GNOME_VFS_ERROR_PROTOCOL_ERROR)
+				xRow->appendString( rProp, GnomeToOUString( m_info.name ) );
+			else {
+				// m_info is not valid, we have to guess something close enough
+				rtl::OUString aURI( getOUURI() );
+
+				sal_Int32 nLastSlash = aURI.lastIndexOf( '/' );
+				if (nLastSlash >= 0)
+					aURI = aURI.copy( nLastSlash + 1 );
+
+				xRow->appendString( rProp, aURI );
+			}
 		}
 
 		else if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "ContentType" ) ) )
--- ucb/source/ucp/gvfs/directory.cxx	2007-07-17 16:49:55.000000000 +0200
+++ ucb/source/ucp/gvfs/directory.cxx	2007-07-19 19:54:35.000000000 +0200
@@ -376,9 +376,11 @@ sal_Bool DataSupplier::getData()
 
 		GnomeVFSFileInfo *pFileInfo = gnome_vfs_file_info_new();
 		while ((result = gnome_vfs_directory_read_next (dirHandle, pFileInfo)) == GNOME_VFS_OK) {
-			if( pFileInfo->name && pFileInfo->name[0] == '.' &&
-			    ( pFileInfo->name[1] == '\0' ||
-			      ( pFileInfo->name[1] == '.' && pFileInfo->name[2] == '\0' ) ) )
+			if( !pFileInfo->name ||
+				pFileInfo->name[0] == '\0' ||
+				( pFileInfo->name[0] == '.' &&
+					( pFileInfo->name[1] == '\0' ||
+					( pFileInfo->name[1] == '.' && pFileInfo->name[2] == '\0' ) ) ) )
 				continue;
 
 			switch ( m_pImpl->m_nOpenMode ) {
