"Liu XiaoFeng" <[email protected]> writes:

> There is a warning when tux3 is compiled:
> "fs/tux3/dleaf.c:300: warning: 'rest_limit_adjust' may be used uninitialized
> in this function"

Looks like it's the bug of gcc. Which version? (BTW, gcc-4.3 doesn't warn).
Anyway, I'd like to change it like the following instead.

Does the following patch work for your gcc version too?

Thanks.
-- 
OGAWA Hirofumi <[email protected]>



diff -puN user/kernel/dleaf.c~dleaf-cleanup user/kernel/dleaf.c
--- tux3/user/kernel/dleaf.c~dleaf-cleanup      2008-12-31 03:17:33.000000000 
+0900
+++ tux3-hirofumi/user/kernel/dleaf.c   2008-12-31 03:18:48.000000000 +0900
@@ -297,7 +297,7 @@ void dleaf_merge(struct btree *btree, vl
        struct group *group2 = gdict2 - 1;
        struct group *gstop2 = gdict2 - dleaf_groups(from);
        struct entry *edict2 = (struct entry *)gstop2;
-       unsigned merge_gcount = 0, rest_gcount = 0, rest_limit_adjust;
+       unsigned merge_gcount = 0, rest_gcount = 0;
        int can_merge_group = 0;
 
        assert(dleaf_groups(leaf) >= 1);
@@ -313,7 +313,6 @@ void dleaf_merge(struct btree *btree, vl
                if (room < gcount2) {
                        /* Calc adjust for the rest of group/entries */
                        rest_gcount = gcount2 - room;
-                       rest_limit_adjust = entry_limit(edict2 - room);
                        gcount2 = room;
                } else
                        can_merge_group = 1;
@@ -353,9 +352,10 @@ void dleaf_merge(struct btree *btree, vl
                        /* adjust the group/entries which couldn't merge */
                        ebase = estop;
                        estop = ebase - rest_gcount;
+                       limit_adjust = entry_limit(edict2 - merge_gcount);
                        set_group_count(gstop - 1, rest_gcount);
                        while (--ebase >= estop)
-                               inc_entry_limit(ebase, -rest_limit_adjust);
+                               inc_entry_limit(ebase, -limit_adjust);
                }
        }
        assert(!dleaf_check(leaf, btree->sb->blocksize));
_

_______________________________________________
Tux3 mailing list
[email protected]
http://mailman.tux3.org/cgi-bin/mailman/listinfo/tux3

Reply via email to