diff --git a/gtk/makemeta-ui.c b/gtk/makemeta-ui.c index 2d0e52511..364052855 100644 --- a/gtk/makemeta-ui.c +++ b/gtk/makemeta-ui.c @@ -65,12 +65,14 @@ progress_response_cb ( GtkDialog *d UNUSED, int response, gpointer user_data ) static gboolean refresh_cb ( gpointer user_data ) { + int denom; char buf[1024]; double fraction; MakeMetaUI * ui = (MakeMetaUI *) user_data; GtkProgressBar * p = GTK_PROGRESS_BAR( ui->progressbar ); - fraction = (double)ui->builder->pieceIndex / ui->builder->pieceCount; + denom = ui->builder->pieceCount ? ui->builder->pieceCount : 1; + fraction = (double)ui->builder->pieceIndex / denom; gtk_progress_bar_set_fraction( p, fraction ); g_snprintf( buf, sizeof(buf), "%s (%d%%)", ui->torrent_name, (int)(fraction*100 + 0.5)); gtk_progress_bar_set_text( p, buf ); diff --git a/libtransmission/makemeta.c b/libtransmission/makemeta.c index ce17b1592..dfb572304 100644 --- a/libtransmission/makemeta.c +++ b/libtransmission/makemeta.c @@ -181,13 +181,17 @@ static uint8_t* getHashInfo ( tr_metainfo_builder_t * b ) { int fileIndex = 0; - uint8_t *ret = tr_new( uint8_t, SHA_DIGEST_LENGTH * b->pieceCount ); + uint8_t *ret = tr_new0( uint8_t, SHA_DIGEST_LENGTH * b->pieceCount ); uint8_t *walk = ret; - uint8_t *buf = tr_new( uint8_t, b->pieceSize ); + uint8_t *buf; uint64_t totalRemain; uint64_t off = 0; FILE * fp; + if( !b->totalSize ) + return ret; + + buf = tr_new( uint8_t, b->pieceSize ); b->pieceIndex = 0; totalRemain = b->totalSize; fp = fopen( b->files[fileIndex].filename, "rb" );