[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdesdk/kioslave/svn
From:       Mickael Marchand <marchand () kde ! org>
Date:       2009-02-05 17:34:41
Message-ID: 1233855281.242605.12056.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 921797 by marchand:

fix ::stat to correctly return errors to KIO when something bad happens

BUG: 112880

 M  +14 -2     svn.cpp  


--- trunk/KDE/kdesdk/kioslave/svn/svn.cpp #921796:921797
@@ -286,7 +286,7 @@
 	svn_pool_destroy (subpool);
 }
 
-void kio_svnProtocol::stat(const KUrl & url){
+void kio_svnProtocol::stat(const KUrl & url) {
 	kDebug(7128) << "kio_svn::stat(const KUrl& url) : " << url.url();
 
 	void *ra_baton, *session;
@@ -327,12 +327,16 @@
 	svn_error_t *err = svn_ra_init_ra_libs(&ra_baton,subpool);
 	if ( err ) {
 		kDebug(7128) << "init RA libs failed : " << err->message;
+		error( KIO::ERR_SLAVE_DEFINED, err->message );
+		svn_pool_destroy( subpool );
 		return;
 	}
 	//find RA libs
 	err = svn_ra_get_ra_library(&ra_lib,ra_baton,svn_path_canonicalize( \
target.toUtf8(), subpool ),subpool);  if ( err ) {
 		kDebug(7128) << "RA get libs failed : " << err->message;
+		error( KIO::ERR_SLAVE_DEFINED, err->message );
+		svn_pool_destroy( subpool );
 		return;
 	}
 	kDebug(7128) << "RA init completed";
@@ -354,6 +358,8 @@
 	err = ra_lib->open(&session,svn_path_canonicalize( target.toUtf8(), subpool \
),cbtable,callbackbt,ctx->config,subpool);  if ( err ) {
 		kDebug(7128)<< "Open session " << err->message;
+		error( KIO::ERR_SLAVE_DEFINED, err->message );
+		svn_pool_destroy( subpool );
 		return;
 	}
 	kDebug(7128) << "Session opened to " << target;
@@ -362,13 +368,19 @@
 		err = ra_lib->get_latest_revnum(session,&rev.value.number,subpool);
 		if ( err ) {
 			kDebug(7128)<< "Latest RevNum " << err->message;
+			error( KIO::ERR_SLAVE_DEFINED, err->message );
+			svn_pool_destroy( subpool );
 			return;
 		}
 		kDebug(7128) << "Got rev " << rev.value.number;
 	}
 
 	//get it
-	ra_lib->check_path(session,"",rev.value.number,&kind,subpool);
+	err = ra_lib->check_path(session,"",rev.value.number,&kind,subpool);
+	if ( err ) {
+			error( KIO::ERR_SLAVE_DEFINED, err->message );
+			svn_pool_destroy( subpool );
+	}
 	kDebug(7128) << "Checked Path";
 	UDSEntry entry;
 	switch ( kind ) {


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic