Yes, I cleaned up the macro a bit, and your patch now works:

....
#ifdef C_ALLOCA
# define TMP_PROTECT NODE * volatile tmp__protect_tmp=0

# define TMP_ALLOC(n) \
    (tmp__protect_tmp = NEW_NODE(NODE_ALLOCA, \
       ALLOC_N(VALUE,n),tmp__protect_tmp,n), \
      (void*)tmp__protect_tmp->nd_head)


#else
# define TMP_PROTECT typedef int foobazzz
....

Will this patch be integrated into the 1.8.2 source so that myself and
others won't run into the same problem in the future?  If it's
integrated into the source, will it need any special command-line
switches or in-source #defines to be invoked?

Thanks !!