On Sat, Dec 04, 1999 at 10:29:20AM +0100, Tobias Koenig wrote:
Hi Willi,
Ich heisse zwar nicht Willi, aber da Deine Mail nun mal an die Liste ging, antworte ich trotzdem, okay?
Ich habe den Verdacht, das eine Variable nicht richtig geloescht wird, oder die Laenge der Variablen falsch ist. Hast du Ahnung von der gdbm???
Die man page der gdbm ist wirklich nicht toll, aber es steht drin, dass alle Pointer von der Bibliothek intern verwendet und wieder freigegeben werden. Du musst Deine Daten also mit strcpy o. ae. kopieren. Folgende Beispielprogramme funktionieren bei mir.
db-store.c:
#include <gdbm.h> int main () { datum key, val; GDBM_FILE db = gdbm_open ("tk.db", 0, GDBM_NEWDB, 0644, 0); key.dptr = "Tobias"; key.dsize = 7; val.dptr = "Koenig"; val.dsize = 7; gdbm_store (db, key, val, GDBM_REPLACE); gdbm_close (db); return 0; }
db-fetch.c:
#include <gdbm.h> int main () { datum key, val; GDBM_FILE db = gdbm_open ("tk.db", 0, GDBM_READER, 0644, 0); key.dptr = "Tobias"; key.dsize = 7; val = gdbm_fetch (db, key); puts (val.dptr); gdbm_close (db); /* Hier darf val nicht mehr verwendet werden! */ return 0; }
Tschuess Torsten