chiark
/
gitweb
/
~ianmdlvl
/
adns.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
ff9a573
)
src/query.c: Handle the magic zero-byte-allocation convention.
author
Mark Wooding
<mdw@distorted.org.uk>
Wed, 14 May 2014 00:13:21 +0000
(
01:13
+0100)
committer
Mark Wooding
<mdw@distorted.org.uk>
Wed, 14 May 2014 00:13:21 +0000
(
01:13
+0100)
src/query.c
patch
|
blob
|
history
diff --git
a/src/query.c
b/src/query.c
index 46d69699e49750b806bc4983b7ef4523a9963fce..8944b2f3c67d527d30b1ccba959a500e3d68a6f8 100644
(file)
--- a/
src/query.c
+++ b/
src/query.c
@@
-390,11
+390,11
@@
void *adns__alloc_preserved(adns_query qu, size_t sz) {
return rv;
}
return rv;
}
-static allocnode *alloc_info(void *p, size_t *sz_r)
+static allocnode *alloc_info(
adns_query qu,
void *p, size_t *sz_r)
{
allocnode *an;
{
allocnode *an;
- if (!p) { *sz_r = 0; return 0; }
+ if (!p
|| p == qu
) { *sz_r = 0; return 0; }
an = (allocnode *)((byte *)p - MEM_ROUND(sizeof(allocnode)));
*sz_r = MEM_ROUND(an->sz);
return an;
an = (allocnode *)((byte *)p - MEM_ROUND(sizeof(allocnode)));
*sz_r = MEM_ROUND(an->sz);
return an;
@@
-402,7
+402,7
@@
static allocnode *alloc_info(void *p, size_t *sz_r)
void adns__free_interim(adns_query qu, void *p) {
size_t sz;
void adns__free_interim(adns_query qu, void *p) {
size_t sz;
- allocnode *an = alloc_info(p, &sz);
+ allocnode *an = alloc_info(
qu,
p, &sz);
if (!an) return;
assert(!qu->final_allocspace);
if (!an) return;
assert(!qu->final_allocspace);
@@
-417,7
+417,7
@@
void *adns__alloc_mine(adns_query qu, size_t sz) {
void adns__transfer_interim(adns_query from, adns_query to, void *block) {
size_t sz;
void adns__transfer_interim(adns_query from, adns_query to, void *block) {
size_t sz;
- allocnode *an = alloc_info(block, &sz);
+ allocnode *an = alloc_info(
from,
block, &sz);
if (!an) return;
if (!an) return;