<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/59158>59158</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Clang invalid warning "variables 'full' and 'corrupt' used in loop condition not modified in loop body"
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          KPexEA
      </td>
    </tr>
</table>

<pre>
    The code seems to compile and run fine, it's just annoying to get this warning every time.

The variables are changed in the  lambda functions 'get' and 'put':

                        bool full = false, corrupt = false;

                        //lambda function
                        auto put = [&](uint8_t v)
                        {
                                if (!full)
                                {
                                        unpacked[upos--] = v;
                                        if (!upos)
                                                full = true;
                                }
                        };
                        //lambda function
                        auto get = [&]() -> uint8_t
                        {
                                if (!packed.size())
                                {
                                        corrupt = true;
                                        return 0;
                                }
                                const uint8_t v = packed.back();
                                packed.pop_back();
                                return v;
                        };

                        for (; !full && !corrupt;)
                        {
                                uint32_t cnt = 1;
                                uint8_t v = get();
                                if (v == repcmd)
                                {
                                        cnt = get();
                                        if (cnt == 0)
                                                cnt = 256;
                                        v = get();
                                }
                                while (cnt--)
                                        put(v);
                        }
                        if (!full || corrupt)
                                return returnError(eIMAGERESULT_CORRUPT, "Error: C64 FBI corruption encountered");

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyVVV1v2yAU_TX4BTWycR3HD37IV6dqmzZ17XOFbZzQEbD4SNf9-l2wm6ap07USMsJczj33cLm3Us1TebtluFYNw4axncFWwWrXccEwlQ3WTuKWS4bIEnOLSG7wgzMW9qR64nLj7TfMYrvlBj9SLf0_tmf6CVu-YxMUr1A877_e055qTivBDKYa_G6p3LAGcwkADGNBd1VDcetkbbmSBoNDQIdvIANz5_wKpfNjYBQX_aiUEnBaCIzSFW6pMIF4rbR2nT36mS5GzyNyBeOExYkNdRAy0AhoKFsgMkXZCpGZ49LO7i3eI1Kc4uaL0z9xwVsIaIZI4gmPnDlzDIaTHa1_swa8u06ZiwsgEOjsjwIrRn15-3FfYRy0s9qxcbB89Sa41YjlR5X0yXOqJBDEFyhd40HST6nZSzMx_C_roT4l7XGqnNcgLjSzTkscf1Qjjyzh3RySJHgYuFYwDVzH4AarTnX3_7EcWI2lwatLerXVKh2kSxd4SEbsb4JM_XLQw5_9WFb7AFMCEdayVzEZZfpah_DGz0bVX22w9MaadfWu-dytDlze93NwNZj7E_E7j-UZlWTTc3gfCW80Wx63vgL3XOB9nyERquFsP478BvZVwcEoX8J4ro2jHoZ06qe11krDeXb9ff5lfbP-dfft9n754-bm7uetL7KIkN4knePl9BJfLa6fweHpYyZr5aRlGsoWIceMI1Ym02lB4JPnUVOmTZEWNLLcClYuBXQI6A97KnhzaDCA8NJIoB_0FfTQJA4x5diZvr0IpTqgIxse2Ehl8U41vOVH2xW0Q0COnBbl1trO-DYT6tiG262rJtAYfVET--fpotPqgdXg6Yob4xiU1qusSLJZtC3zhmZ1VhWzNCeETmk1vWybrGqTqolpwtpI0IoJU4bCRyR7xAHCi5OtIl6SmJAkIWmSJXmWT1pa5VWbszxr66otcnQZsx3lYuJ5TJTeRLoMlCq3MbApuLHmZZMawzeSseAO8KH2bpUuv_5kf9bzKHguA_N_BVEllw">