st->cache[he * 4].a = *a;
if(len > 0)
st->cache[he * 4].data = memcpy(malloc(len), data, len);
st->cache[he * 4].a = *a;
if(len > 0)
st->cache[he * 4].data = memcpy(malloc(len), data, len);
ssize_t storeget(struct store *st, void *buf, size_t len, struct addr *at)
{
ssize_t sz;
ssize_t storeget(struct store *st, void *buf, size_t len, struct addr *at)
{
ssize_t sz;
- sz = cacheget(st, at, buf, len);
+ at2 = *at;
+ sz = cacheget(st, &at2, buf, len);
- sz = st->ops->get(st, buf, len, at);
+ sz = st->ops->get(st, buf, len, &at2);
- cacheput(st, at, NULL, -1);
+ cacheput(st, &at2, NULL, -1);
- cacheput(st, at, buf, sz);
+ cacheput(st, &at2, buf, sz);