apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Craig Holmquist" <craigh...@gmail.com>
Subject APR_BRIGADE_SENTINEL macro causes compile error
Date Sat, 06 Dec 2008 19:40:07 GMT
Use of the APR_BRIGADE_SENTINEL macro now causes compile errors with
the current APR headers.  This was observed trying to compile
mod_python with the httpd 2.2.10 headers, on MS Windows with Visual
Studio 2008, but I suspect it affects all platforms.

The error is:

C:\Download\tmp\mod_python-3.3.1\src\connobject.c(142) : error C2037:
left of 'next' specifies undefined struct/union 'apr_bucket_alloc_t'

After investigating, I think the cause of problem is this change to apr_ring.h:


 #define APR_RING_SENTINEL(hp, elem, link)				\
-    (struct elem *)((char *)(hp) - APR_OFFSETOF(struct elem, link))
+    (struct elem *)((char *)(&(hp)->next) - APR_OFFSETOF(struct elem, link))

What's passed to APR_RING_SENTINEL (as "hp") is a pointer to
apr_bucket_alloc_t, which is declared in apr_buckets.h but not
actually defined anywhere (as far as I can tell, at least nowhere in
the headers that are bundled with the Windows installation of httpd
2.2.10), therefore none of its members can be referenced.

mod_python compiles without any errors using the httpd 2.2.8 headers.

View raw message