diff -ur globus_ldapmodules-0.14.orig/search.c globus_ldapmodules-0.14/search.c --- globus_ldapmodules-0.14.orig/search.c 2004-01-12 21:21:49.000000000 +0100 +++ globus_ldapmodules-0.14/search.c 2004-10-20 11:08:04.044250721 +0200 @@ -505,6 +505,34 @@ if(data1) free(data1); tempdataobj_gris = sdataobj_gris; /*SETTING UP DATA FROM INITIAL ENTRY FOR DISPATCH*/ + + if (sdataobj_gris) { + /*CALCULATE BUFFER TO BE USED TO CACHE DATA*/ + cntrl = (glist[inx])->current; + cntrl = (cntrl +1) % (glist[inx])->mod; + + /*CHECK FOR AND FREE EXISTING DATA*/ + if((glist[inx])->dataobj_gris[cntrl]) + { + cdataobj_gris = (glist[inx])->dataobj_gris[cntrl]; + ndataobj_gris = cdataobj_gris; + while(ndataobj_gris) + { + ndataobj_gris = cdataobj_gris->next; + entry_free(cdataobj_gris->e); + free(cdataobj_gris); + cdataobj_gris = ndataobj_gris; + } + } + /* CACHING NEW DATA */ + (glist[inx])->dataobj_gris[cntrl] = sdataobj_gris; + (glist[inx])->current = cntrl; + sdataobj_gris = NULL; + edataobj_gris = NULL; + ndataobj_gris = NULL; + cdataobj_gris = NULL; + } + while(tempdataobj_gris) /*data dispatch*/ { if (ldif_dispatch_obj(tempdataobj_gris->e->e_ndn, nbase, scope) != 1) @@ -554,30 +582,6 @@ } - /*CALCULATE BUFFER TO BE USED TO CACHE DATA*/ - cntrl = (glist[inx])->current; - cntrl = (cntrl +1) % (glist[inx])->mod; - - /*CHECK FOR AND FREE EXISTING DATA*/ - if((glist[inx])->dataobj_gris[cntrl]) - { - cdataobj_gris = (glist[inx])->dataobj_gris[cntrl]; - ndataobj_gris = cdataobj_gris; - while(ndataobj_gris) - { - ndataobj_gris = cdataobj_gris->next; - entry_free(cdataobj_gris->e); - free(cdataobj_gris); - cdataobj_gris = ndataobj_gris; - } - } - /* CACHING NEW DATA */ - (glist[inx])->dataobj_gris[cntrl] = sdataobj_gris; - (glist[inx])->current = cntrl; - sdataobj_gris = NULL; - edataobj_gris = NULL; - ndataobj_gris = NULL; - cdataobj_gris = NULL; }