diff --git a/gtk/tr-core.c b/gtk/tr-core.c
index 369af1c9b..fd552863a 100644
--- a/gtk/tr-core.c
+++ b/gtk/tr-core.c
@@ -1693,7 +1693,7 @@ static void
blocklistResponseFunc( TrCore * core, tr_benc * response, gpointer userData UNUSED )
{
tr_benc * args;
- int64_t ruleCount = 0;
+ int64_t ruleCount = -1;
if( tr_bencDictFindDict( response, "arguments", &args ) )
tr_bencDictFindInt( args, "blocklist-size", &ruleCount );
diff --git a/gtk/tr-prefs.c b/gtk/tr-prefs.c
index 03b869476..35235ec31 100644
--- a/gtk/tr-prefs.c
+++ b/gtk/tr-prefs.c
@@ -425,12 +425,14 @@ onBlocklistUpdateResponse( GtkDialog * dialog, gint response UNUSED, gpointer gd
static void
onBlocklistUpdated( TrCore * core, int n, gpointer gdata )
{
- const char * s = gtr_ngettext( "Blocklist now has %'d rule.", "Blocklist now has %'d rules.", n );
+ const tr_bool success = n >= 0;
+ const int count = n >=0 ? n : tr_blocklistGetRuleCount( tr_core_session( core ) );
+ const char * s = gtr_ngettext( "Blocklist has %'d rule.", "Blocklist has %'d rules.", count );
struct blocklist_data * data = gdata;
GtkMessageDialog * d = GTK_MESSAGE_DIALOG( data->updateBlocklistDialog );
gtk_widget_set_sensitive( data->updateBlocklistButton, TRUE );
- gtk_message_dialog_set_markup( d, _( "Update succeeded!" ) );
- gtk_message_dialog_format_secondary_text( d, s, n );
+ gtk_message_dialog_set_markup( d, success ? _( "Update succeeded!" ) : _( "Unable to update." ) );
+ gtk_message_dialog_format_secondary_text( d, s, count );
updateBlocklistText( data->label, core );
}