2010-07-02 2 views
0

Мне нужно создать коллекцию GdkPixBuf. Я пытаюсь сохранить pixbufs в GList - mw-> disp_list:Коллекция GdkPixbuf

GtkTreeIter iter; 
int i = 0; 

for (i; i < g_list_length(list) - 1; ++i) 
{      
    char* file = image_list_get_current_file_path(list); 

    mw->p1 = gdk_pixbuf_new_from_file(file,NULL); 
    mw->p1 = scale_pix(mw->p1,128); 

    mw->disp_list = g_list_append (mw->disp_list, mw->p1); 

    if (!mw->img_list->current->next) 
     image_list_get_first(mw->img_list); 
    else 
     image_list_get_next(mw->img_list); 
} 

Где p1 - это GtkPixBuf *.

Но когда я пытаюсь использовать mw-> disp_list в другой функции, я вижу, что она NULL. Что не так?

спасибо.

+0

как первое, я заметил как странный цикл for; вам не нужна первая часть for, если вы инициализируете переменную loop out вне нее: 'for (; i <...' в порядке, а 'for (i; i <...' работает тоже, но i оценивается без причины, обычно вы пишете такой цикл, как 'for (i = 0; i <...', и вы можете просто написать 'int i;' вместо 'int i = 0;' – ShinTakezou

+0

еще одно примечание о loop: 'i ShinTakezou

ответ

1

На данный момент я вижу только одну проблему, и речь идет о цикле, который должен быть:

for (i = 0; i < g_list_length(list); ++i) 

Проблема может быть -1: если список содержит 1 элемент, вы не петля на всех , так как 1-1 = 0 и 0 < 0 неверно.