X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fmarcread.c;h=d04b0396149af7dd3c3f5062b743b95aa7a0768a;hb=4c112f15503aebed494fab8aa5296c3661bfb31c;hp=93abbc5ad87bc875106c9b2a72c391d30c5cb550;hpb=852d5f1f9aa0a70f7e54a68143ee86752394a2f2;p=idzebra-moved-to-github.git diff --git a/index/marcread.c b/index/marcread.c index 93abbc5..d04b039 100644 --- a/index/marcread.c +++ b/index/marcread.c @@ -1,4 +1,4 @@ -/* $Id: marcread.c,v 1.3 2006-08-22 13:39:27 adam Exp $ +/* $Id: marcread.c,v 1.5 2006-10-26 23:49:14 adam Exp $ Copyright (C) 1995-2006 Index Data ApS @@ -116,7 +116,7 @@ static data1_node *grs_read_iso2709 (struct grs_read_info *p, int marc_xml) else res_top = data1_mk_tag (p->dh, p->mem, absynName, 0, res_root); - if ((marctab = data1_absyn_getmarctab(p->dh, res_root->u.root.absyn))) + if ((marctab = data1_absyn_getmarctab(p->dh, res_root))) { memcpy(marctab->leader, buf, 24); memcpy(marctab->implementation_codes, buf+6, 4); @@ -706,7 +706,7 @@ static int is_empty(char *s) static void parse_data1_tree(struct grs_read_info *p, const char *mc_stmnt, data1_node *root) { - data1_marctab *marctab = data1_absyn_getmarctab(p->dh, root->u.root.absyn); + data1_marctab *marctab = data1_absyn_getmarctab(p->dh, root); data1_node *top = root->child; data1_node *field; mc_context *c; @@ -736,9 +736,12 @@ static void parse_data1_tree(struct grs_read_info *p, const char *mc_stmnt, yaz_log(YLOG_LOG,"parse_data1_tree(): try LEADER from {%d} to {%d} positions", pf->interval.start, pf->interval.end); #endif - new = data1_mk_tag_n(p->dh, p->mem, mc_stmnt, strlen(mc_stmnt), 0, top); - data1_mk_text_n(p->dh, p->mem, marctab->leader+pf->interval.start, - pf->interval.end-pf->interval.start+1, new); + if (marctab) + { + new = data1_mk_tag_n(p->dh, p->mem, mc_stmnt, strlen(mc_stmnt), 0, top); + data1_mk_text_n(p->dh, p->mem, marctab->leader+pf->interval.start, + pf->interval.end-pf->interval.start+1, new); + } } else { @@ -787,7 +790,7 @@ data1_node *grs_read_marcxml(struct grs_read_info *p) if (!root) return 0; - for (e = data1_absyn_getelements(p->dh, root->u.root.absyn); e; e=e->next) + for (e = data1_absyn_getelements(p->dh, root); e; e=e->next) { data1_tag *tag = e->tag; @@ -806,7 +809,7 @@ data1_node *grs_read_marc(struct grs_read_info *p) if (!root) return 0; - for (e = data1_absyn_getelements(p->dh, root->u.root.absyn); e; e=e->next) + for (e = data1_absyn_getelements(p->dh, root); e; e=e->next) { data1_tag *tag = e->tag;