Package: gnokii
Version: 0.6.30+dfsg-1
Usertags: goto-cc

The following beautiful piece of code is found in lines 3972-3991 of
common/phones/nk6510.c:

        /* 6510 needs to seek the first free pos to inhabit with next note */
        error = NK6510_FirstCalendarFreePos(data, state);
        if (error != GN_ERR_NONE)
                if (error == GN_ERR_NOTSUPPORTED) {
                        /*
                         * GN_ERR_NOTSUPPORTED most likely means 0xf0 frame. 
Experience shows that
                         * with high probability we have series40 3rd+ Ed phone.
                         */
                        error = NK6510_WriteCalendarNote2(data, state);
                        if (error == GN_ERR_NONE) {
                                dprintf("Misconfiguration in the phone table 
detected.\nPlease report to gnokii ml (gnokii-us...@nongnu.org).\n");
                                dprintf("Model %s (%s) is series40 3rd+ 
Edition.\n", DRVINSTANCE(state)->pm->product_name, 
DRVINSTANCE(state)->pm->model);
                                DRVINSTANCE(state)->pm->flags |= 
PM_DEFAULT_S40_3RD;
                        }
                        return error;
                }
                return error;

        /* Location */
        req[4] = calnote->location >> 8;
        req[5] = calnote->location & 0xff;

The part commented with "/* Location */", however, is dead code: the "return
error" is *not* guarded by any of the if statements above, even though
indentation suggests so. Thus NK6510_WriteCalendarNote always returns in line
3987, even if error was GN_ERR_NONE! Thus the proper task of
NK6510_WriteCalendarNote is never ever completed.

Best,
Michael

Attachment: pgpSGkVSUYwpc.pgp
Description: PGP signature

Reply via email to