From b12401b4d4fd4a145db8cd2abcac253bb0e50fea Mon Sep 17 00:00:00 2001 From: Björn Stenberg Date: Thu, 13 Mar 2003 15:45:38 +0000 Subject: Initialize return code at start of loop, not at the end. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3440 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/ata.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'firmware/drivers') diff --git a/firmware/drivers/ata.c b/firmware/drivers/ata.c index c2a02cb03c..523b080ec8 100644 --- a/firmware/drivers/ata.c +++ b/firmware/drivers/ata.c @@ -204,6 +204,7 @@ int ata_read_sectors(unsigned long start, buf = inbuf; count = incount; while (TIME_BEFORE(current_tick, timeout)) { + ret = 0; if ( count == 256 ) ATA_NSECTOR = 0; /* 0 means 256 sectors */ @@ -276,15 +277,14 @@ int ata_read_sectors(unsigned long start, ret = -3; goto retry; } - - ret = 0; break; } led(false); mutex_unlock(&ata_mtx); - if ( delayed_write ) + /* only flush if reading went ok */ + if ( (ret == 0) && delayed_write ) ata_flush(); return ret; @@ -373,7 +373,8 @@ int ata_write_sectors(unsigned long start, mutex_unlock(&ata_mtx); - if ( delayed_write ) + /* only flush if writing went ok */ + if ( (ret == 0) && delayed_write ) ata_flush(); return ret; -- cgit v1.2.3