Comments
Patch
@@ -441,17 +441,27 @@
recs1 = xdf1->recs;
recs2 = xdf2->recs;
for (i = 0, lim = XDL_MIN(xdf1->nrec, xdf2->nrec); i < lim;
- i++, recs1++, recs2++)
- if ((*recs1)->ha != (*recs2)->ha)
+ i++, recs1++, recs2++) {
+ /* rec->ha is not processed by xdl_prepare_hashtable, so
+ * they are not unique - do a content match here */
+ if ((*recs1)->size != (*recs2)->size)
break;
+ if (memcmp((*recs1)->ptr, (*recs2)->ptr, (*recs1)->size) != 0)
+ break;
+ }
xdf1->dstart = xdf2->dstart = i;
recs1 = xdf1->recs + xdf1->nrec - 1;
recs2 = xdf2->recs + xdf2->nrec - 1;
- for (lim -= i, i = 0; i < lim; i++, recs1--, recs2--)
- if ((*recs1)->ha != (*recs2)->ha)
+ for (lim -= i, i = 0; i < lim; i++, recs1--, recs2--) {
+ /* rec->ha is not processed by xdl_prepare_hashtable, so
+ * they are not unique - do a content match here */
+ if ((*recs1)->size != (*recs2)->size)
break;
+ if (memcmp((*recs1)->ptr, (*recs2)->ptr, (*recs1)->size) != 0)
+ break;
+ }
xdf1->dend = xdf1->nrec - i - 1;
xdf2->dend = xdf2->nrec - i - 1;