X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fzoom-c.c;h=e05de203c4e9b4c6baea7152605a8e80c1ebdf6a;hb=dfcd482cb9c615dd3f0410d20f5d9a398e701ade;hp=d02f63a65162517ea4cf68ad8bc904216fc8adfe;hpb=43454d6c60e8f2d0d7d6208ec2436c55a6a67a0c;p=yaz-moved-to-github.git diff --git a/src/zoom-c.c b/src/zoom-c.c index d02f63a..e05de20 100644 --- a/src/zoom-c.c +++ b/src/zoom-c.c @@ -406,6 +406,7 @@ ZOOM_API(ZOOM_connection) c->odr_in = odr_createmem(ODR_DECODE); c->odr_out = odr_createmem(ODR_ENCODE); + c->odr_print = 0; c->async = 0; c->support_named_resultsets = 0; @@ -479,6 +480,11 @@ ZOOM_API(void) set_ZOOM_error(c, ZOOM_ERROR_NONE, 0); ZOOM_connection_remove_tasks(c); + if (c->odr_print) + { + odr_setprint(c->odr_print, 0); /* prevent destroy from fclose'ing */ + odr_destroy(c->odr_print); + } if (ZOOM_options_get_bool(c->options, "apdulog", 0)) { c->odr_print = odr_createmem(ODR_PRINT); @@ -1965,6 +1971,9 @@ static const char *return_record(ZOOM_record rec, int *len, charset); if (ret_buf) return ret_buf; + /* bad ISO2709. Return fail unless raw (ISO2709) is wanted */ + if (marctype != YAZ_MARC_ISO2709) + return 0; } return return_string_record(rec, len, (const char *) r->u.octet_aligned->buf, @@ -2144,14 +2153,15 @@ ZOOM_API(const char *) { return return_record(rec, len, npr, YAZ_MARC_ISO2709, charset); } - else if (!strcmp (type, "ext")) + else if (!strcmp(type, "ext")) { if (len) *len = -1; return (const char *) npr->u.databaseRecord; } - else if (!strcmp (type, "opac")) + else if (!strcmp(type, "opac")) { - return return_record(rec, len, npr, YAZ_MARC_MARCXML, charset); + if (npr->u.databaseRecord->which == Z_External_OPAC) + return return_record(rec, len, npr, YAZ_MARC_MARCXML, charset); } return 0; } @@ -3136,7 +3146,7 @@ static Z_ItemOrder *encode_item_order(ZOOM_package p) req->u.esRequest->notToKeep->resultSetItem->resultSetId = odr_strdup(p->odr_out, str); req->u.esRequest->notToKeep->resultSetItem->item = - (int *) odr_malloc(p->odr_out, sizeof(int)); + odr_intdup(p->odr_out, 0); str = ZOOM_options_get(p->options, "itemorder-item"); *req->u.esRequest->notToKeep->resultSetItem->item =