X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fyaz-z-cache.cpp;h=b0729a4a84b16de855aa5da324b898a00289d2af;hb=d3d51bee2100324025f7530d4e3ff3502397fd83;hp=1468b7df8af9e096e26ba71ee0bbfddd60feaa1f;hpb=3925b97e468538ef3394b99896e19ac5d3120b5f;p=yazpp-moved-to-github.git diff --git a/src/yaz-z-cache.cpp b/src/yaz-z-cache.cpp index 1468b7d..b0729a4 100644 --- a/src/yaz-z-cache.cpp +++ b/src/yaz-z-cache.cpp @@ -1,8 +1,8 @@ /* - * Copyright (c) 2002-2003, Index Data. + * Copyright (c) 2002-2004, Index Data. * See the file LICENSE for details. * - * $Id: yaz-z-cache.cpp,v 1.6 2003-10-08 08:52:59 adam Exp $ + * $Id: yaz-z-cache.cpp,v 1.8 2004-01-24 21:32:31 adam Exp $ */ #include @@ -116,7 +116,11 @@ void Yaz_RecordCache::add (ODR o, Z_NamePlusRecordList *npr, int start, { Yaz_RecordCache_Entry *entry = (Yaz_RecordCache_Entry *) nmem_malloc(m_mem, sizeof(*entry)); - entry->m_record = npr->records[i]; + entry->m_record = (Z_NamePlusRecord *) + nmem_malloc(m_mem, sizeof(*entry->m_record)); + entry->m_record->databaseName = npr->records[i]->databaseName; + entry->m_record->which = npr->records[i]->which; + entry->m_record->u.databaseRecord = npr->records[i]->u.databaseRecord; entry->m_comp = comp; entry->m_offset = i + start; entry->m_next = m_entries; @@ -150,7 +154,6 @@ int Yaz_RecordCache::match (Yaz_RecordCache_Entry *entry, odr_destroy(o2); if (!match) return 0; - if (!syntax) return 0; // See if offset, OID match.. @@ -159,6 +162,14 @@ int Yaz_RecordCache::match (Yaz_RecordCache_Entry *entry, !oid_oidcmp(entry->m_record->u.databaseRecord->direct_reference, syntax)) return 1; +#if 0 + char mstr1[100]; + oid_to_dotstring(entry->m_record->u.databaseRecord->direct_reference, mstr1); + char mstr2[100]; + oid_to_dotstring(syntax, mstr2); + yaz_log(LOG_LOG, "match fail 3 d=%s s=%s", mstr1, mstr2); +#endif + return 0; } @@ -191,7 +202,12 @@ int Yaz_RecordCache::lookup (ODR o, Z_NamePlusRecordList **npr, break; if (!entry) return 0; - (*npr)->records[i] = entry->m_record; + (*npr)->records[i] = (Z_NamePlusRecord *) + odr_malloc(o, sizeof(Z_NamePlusRecord)); + (*npr)->records[i]->databaseName = entry->m_record->databaseName; + (*npr)->records[i]->which = entry->m_record->which; + (*npr)->records[i]->u.databaseRecord = + entry->m_record->u.databaseRecord; } return 1; }