ImGui - Application.exe has triggered a breakpoint

202
11 мая 2019, 18:10

После того, как в проекте появилась компиляция с CLR, программа падает в следующем куске кода:

// sort according to heuristic
STBRP_SORT(rects, num_rects, sizeof(rects[0]), rect_height_compare);
for (i = 0; i < num_rects; ++i) { // здесь
    if (rects[i].w == 0 || rects[i].h == 0) {
        rects[i].x = rects[i].y = 0;  // empty rect needs no space
    }
    else {
        stbrp__findresult fr = stbrp__skyline_pack_rectangle(context, rects[i].w, rects[i].h);
        if (fr.prev_link) {
            rects[i].x = (stbrp_coord)fr.x;
            rects[i].y = (stbrp_coord)fr.y;
        }
        else {
            rects[i].x = rects[i].y = STBRP__MAXVAL;
        }
    }
}
// unsort
STBRP_SORT(rects, num_rects, sizeof(rects[0]), rect_original_order);

Полная ф-ция:

#ifdef STBRP_LARGE_RECTS
#define STBRP__MAXVAL  0xffffffff
#else
#define STBRP__MAXVAL  0xffff
#endif
STBRP_DEF int stbrp_pack_rects(stbrp_context *context, stbrp_rect *rects, int num_rects)
{
    int i, all_rects_packed = 1;
    // we use the 'was_packed' field internally to allow sorting/unsorting
    for (i = 0; i < num_rects; ++i) {
        rects[i].was_packed = i;
#ifndef STBRP_LARGE_RECTS
        STBRP_ASSERT(rects[i].w <= 0xffff && rects[i].h <= 0xffff);
#endif
    }
    // sort according to heuristic
    STBRP_SORT(rects, num_rects, sizeof(rects[0]), rect_height_compare);
    for (i = 0; i < num_rects; ++i) {
        if (rects[i].w == 0 || rects[i].h == 0) {
            rects[i].x = rects[i].y = 0;  // empty rect needs no space
        }
        else {
            stbrp__findresult fr = stbrp__skyline_pack_rectangle(context, rects[i].w, rects[i].h);
            if (fr.prev_link) {
                rects[i].x = (stbrp_coord)fr.x;
                rects[i].y = (stbrp_coord)fr.y;
            }
            else {
                rects[i].x = rects[i].y = STBRP__MAXVAL;
            }
        }
    }
    // unsort
    STBRP_SORT(rects, num_rects, sizeof(rects[0]), rect_original_order);
    // set was_packed flags and all_rects_packed status
    for (i = 0; i < num_rects; ++i) {
        rects[i].was_packed = !(rects[i].x == STBRP__MAXVAL && rects[i].y == STBRP__MAXVAL);
        if (!rects[i].was_packed)
            all_rects_packed = 0;
    }
    // return the all_rects_packed status
    return all_rects_packed;
}
#endif

Что может быть не так? До компиляции с /clr все было в порядке, теперь же падает. CLR необходим для реализации одной из функций.

READ ALSO
Из файла записать в массив

Из файла записать в массив

Нужно записать значения из файла в массивВ файле все выглядит как таблица 5 на 3

213
Нормально ли с точки зрения хорошей архитектуры иметь метод на 50-60+ строк? [закрыт]

Нормально ли с точки зрения хорошей архитектуры иметь метод на 50-60+ строк? [закрыт]

Есть метод, на вход которого приходит список Json - строкИз них нужно распарсить данные, преобразовать их к рабочему виду и склеить в один текст,...

181
Неверно выводит таблицы с данными

Неверно выводит таблицы с данными

Столкнулся с проблемой, есть база данных с заказами пользователейЕсть метод, который согласно User id вытягивает заказы именно этого юзера

199
Парсер не переходит на другую страницу

Парсер не переходит на другую страницу

Пишу парсер, учусь, вот код:

203