I did some hacking of cdebconf/src/test/test.config: --- test.config 12 Dec 2000 05:13:36 -0000 1.7 +++ test.config 16 Sep 2002 09:27:38 -0000 @@ -1,5 +1,7 @@ #!/bin/sh -e +echo CAPB backup + askquestion() { question=$1 @@ -7,8 +9,8 @@ echo INPUT $priority $question read ans #echo $ans >&2 - echo GO - read ans + #echo GO + #read ans #echo $ans >&2 } @@ -16,6 +18,9 @@ #for t in boolean multiselect note password select string text; do askquestion "test/$t" low done + +echo GO +read ans echo STOP exit 0 When I ran ../debconf test.config (using the gtk2 fe) and tried using the Back button it segfaulted: 236 *pq = (*pq)->prev->prev; (gdb) p (*pq)->prev $2 = (struct question *) 0xe8 (gdb) p (*pq)->prev->prev Cannot access memory at address 0x108 So it seems that the ->prev->prev pointer points to garbage. But why use ->prev->prev? If we want to go back, should we not use ->prev? Or is it a hack so that in the next iteration, you can use q->next? Bear in mind that for the first element of a double-linked list, the invariant curr->prev->next == curr doesn't hold, since curr->prev doesn't exist... Also, I really dislike buttons that disappear and come back. If there's going to be a Back button in the next dialog, please have a disabled Back button in the first one too. Oh, another issue. Using Back and Next isn't that good IMO. Previous and Next, or Back and Forward, but not Back and Next... When I get time to hack some more on it, I'll see if I can make the "main loop" more intelligent when it comes to backing up. Regards, Martin
Attachment:
signature.asc
Description: Detta =?ISO-8859-1?Q?=E4r?= en digitalt signerad meddelandedel