Improve handling of ecc on tags
authorcharles <charles>
Fri, 16 Jan 2009 00:45:47 +0000 (00:45 +0000)
committercharles <charles>
Fri, 16 Jan 2009 00:45:47 +0000 (00:45 +0000)
yaffs_packedtags2.c

index 957ed8bf0e5b19ee73fb36a72beda062a36175d9..3f9a815915894a75f46a2b0ab172c82040d92f30 100644 (file)
@@ -163,15 +163,11 @@ void yaffs_UnpackTags2TagsPart(yaffs_ExtendedTags * t, yaffs_PackedTags2TagsPart
 void yaffs_UnpackTags2(yaffs_ExtendedTags * t, yaffs_PackedTags2 * pt)
 {
 
 void yaffs_UnpackTags2(yaffs_ExtendedTags * t, yaffs_PackedTags2 * pt)
 {
 
-       yaffs_UnpackTags2TagsPart(t,&pt->t);
-
+       yaffs_ECCResult eccResult = YAFFS_ECC_RESULT_NO_ERROR;
+       
        if (pt->t.sequenceNumber != 0xFFFFFFFF) {
                /* Page is in use */
        if (pt->t.sequenceNumber != 0xFFFFFFFF) {
                /* Page is in use */
-#ifdef YAFFS_IGNORE_TAGS_ECC
-               {
-                       t->eccResult = YAFFS_ECC_RESULT_NO_ERROR;
-               }
-#else
+#ifndef YAFFS_IGNORE_TAGS_ECC
                {
                        yaffs_ECCOther ecc;
                        int result;
                {
                        yaffs_ECCOther ecc;
                        int result;
@@ -186,21 +182,25 @@ void yaffs_UnpackTags2(yaffs_ExtendedTags * t, yaffs_PackedTags2 * pt)
                                                  &pt->ecc, &ecc);
                        switch(result){
                                case 0:
                                                  &pt->ecc, &ecc);
                        switch(result){
                                case 0:
-                                       t->eccResult = YAFFS_ECC_RESULT_NO_ERROR;
+                                       eccResult = YAFFS_ECC_RESULT_NO_ERROR;
                                        break;
                                case 1:
                                        break;
                                case 1:
-                                       t->eccResult = YAFFS_ECC_RESULT_FIXED;
+                                       eccResult = YAFFS_ECC_RESULT_FIXED;
                                        break;
                                case -1:
                                        break;
                                case -1:
-                                       t->eccResult = YAFFS_ECC_RESULT_UNFIXED;
+                                       eccResult = YAFFS_ECC_RESULT_UNFIXED;
                                        break;
                                default:
                                        break;
                                default:
-                                       t->eccResult = YAFFS_ECC_RESULT_UNKNOWN;
+                                       eccResult = YAFFS_ECC_RESULT_UNKNOWN;
                        }
                }
 #endif
        }
 
                        }
                }
 #endif
        }
 
+       yaffs_UnpackTags2TagsPart(t,&pt->t);
+       
+       t->eccResult = eccResult;
+
        yaffs_DumpPackedTags2(pt);
        yaffs_DumpTags2(t);
 
        yaffs_DumpPackedTags2(pt);
        yaffs_DumpTags2(t);