X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=zoom%2Fzoom-c.c;h=1839dd2aa1ec5d822dbc54d65d5bb146b2d6c5bf;hb=45079b6641e14101d5338fe1cae5af86647d289d;hp=dcc71a3ef6b018cf44f3983d239298b495553cd4;hpb=1274cfd835afa98442ac013e4556ad7b5c5f71a6;p=yaz-moved-to-github.git diff --git a/zoom/zoom-c.c b/zoom/zoom-c.c index dcc71a3..1839dd2 100644 --- a/zoom/zoom-c.c +++ b/zoom/zoom-c.c @@ -1,5 +1,5 @@ /* - * $Id: zoom-c.c,v 1.41 2002-08-24 09:28:30 oleg Exp $ + * $Id: zoom-c.c,v 1.43 2002-09-03 18:10:13 adam Exp $ * * ZOOM layer for C, connections, result sets, queries. */ @@ -142,12 +142,6 @@ void ZOOM_connection_remove_task (ZOOM_connection c) assert (0); } xfree (task); - /* - Fix me!!! May be it is not right place for reset of the ODR stream, - but if happens to read records from cache we will be get memory leaks - without it (see send_present()). - */ - odr_reset(c->odr_out); } } @@ -1042,7 +1036,7 @@ ZOOM_record_get (ZOOM_record rec, const char *type, int *len) if (!strcmp (type, "database")) { if (len) - *len = strlen(npr->databaseName); + *len = (npr->databaseName ? strlen(npr->databaseName) : 0); return npr->databaseName; } else if (!strcmp (type, "syntax")) @@ -1413,8 +1407,8 @@ static int send_sort (ZOOM_connection c) static int send_present (ZOOM_connection c) { - Z_APDU *apdu = zget_APDU(c->odr_out, Z_APDU_presentRequest); - Z_PresentRequest *req = apdu->u.presentRequest; + Z_APDU *apdu = 0; + Z_PresentRequest *req = 0; int i = 0; const char *syntax = 0; const char *elementSetName = 0; @@ -1461,6 +1455,9 @@ static int send_present (ZOOM_connection c) if (i == resultset->count) return 0; + apdu = zget_APDU(c->odr_out, Z_APDU_presentRequest); + req = apdu->u.presentRequest; + resultset->start += i; resultset->count -= i; *req->resultSetStartPoint = resultset->start + 1;