=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/Attic/apropos_db.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- src/usr.bin/mandoc/Attic/apropos_db.c 2011/12/19 02:26:33 1.15 +++ src/usr.bin/mandoc/Attic/apropos_db.c 2011/12/20 00:41:24 1.16 @@ -1,4 +1,4 @@ -/* $Id: apropos_db.c,v 1.15 2011/12/19 02:26:33 schwarze Exp $ */ +/* $Id: apropos_db.c,v 1.16 2011/12/20 00:41:24 schwarze Exp $ */ /* * Copyright (c) 2011 Kristaps Dzonsons * Copyright (c) 2011 Ingo Schwarze @@ -160,7 +160,7 @@ const struct mchars *mc, struct db_val *dbv, char **buf) { - const struct db_val *vp; + struct db_val raw_dbv; /* Are our sizes sane? */ if (k->size < 2 || sizeof(struct db_val) != v->size) @@ -170,10 +170,10 @@ if ('\0' != ((const char *)k->data)[(int)k->size - 1]) return(0); - vp = v->data; norm_string((const char *)k->data, mc, buf); - dbv->rec = betoh32(vp->rec); - dbv->mask = betoh64(vp->mask); + memcpy(&raw_dbv, v->data, v->size); + dbv->rec = betoh32(raw_dbv.rec); + dbv->mask = betoh64(raw_dbv.mask); return(1); } @@ -369,7 +369,8 @@ return(0); cp = val->data; - rec->res.rec = *(recno_t *)key->data; + assert(sizeof(recno_t) == key->size); + memcpy(&rec->res.rec, key->data, key->size); rec->res.volume = index; if ('d' == (type = *cp++))