Need Help using GLib -> GList



I am trying make a list of lists. When I scan through this list of lists using g_list_first() and g_list_next() it passes through the list one time fine, then after that it does no more. Here is a snippet:

GList * init_players(GList * thePlayers, int num){
    int i;
    GList * ahand;
    for (i=0;i<num;++i){
	ahand = g_new(GList, 1);
	ahand->data=NULL;
	thePlayers=g_list_append(thePlayers,ahand);
    }
    return(thePlayers);
}

void deal(GList * adeck, GList * theplayers){
    int count = 0;

    adeck=g_list_first(adeck);
    while (adeck != NULL){
	g_print("Outer loop %d.\n",++count);
	theplayers=g_list_first(theplayers);
	while(theplayers != NULL){
	    g_print("The player is %u.\n",theplayers);
	    g_print("Inner loop.\n");
	    theplayers=g_list_next(theplayers);
	}
	adeck=g_list_next(adeck);
    }
    g_print("%d cards were dealt.\n", count);
}

In a nutshell I am simulating dealing a deck of cards to num players. The first pass through the inner while loop shows 'reasonable' pointer values for theplayers list. The second pass through, theplayers = NULL. The call to g_list_first is returning NULL for ever so the list seem to be lost. I am not appending anything to the list yet, I was just trying to see if I can scan through the players list correctly. When I call this with num =4 I get four passes in the inner loop, after that it doesn't work.

Can anyone give me some hints?

Jerry



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]