diff --git a/src/driver/mdso_driver_ctx.c b/src/driver/mdso_driver_ctx.c index a485320..d100c0a 100644 --- a/src/driver/mdso_driver_ctx.c +++ b/src/driver/mdso_driver_ctx.c @@ -78,6 +78,7 @@ static struct mdso_driver_ctx_impl * mdso_driver_ctx_alloc( size_t size; struct argv_entry * entry; const char ** units; + int elements; size = sizeof(struct mdso_driver_ctx_alloc); size += (nunits+1)*sizeof(const char *); @@ -92,9 +93,15 @@ static struct mdso_driver_ctx_impl * mdso_driver_ctx_alloc( if (!entry->fopt) *units++ = entry->arg; + elements = sizeof(ictx->ctx.erribuf) / sizeof(*ictx->ctx.erribuf); + + ictx->ctx.errinfp = &ictx->ctx.erriptr[0]; + ictx->ctx.erricap = &ictx->ctx.erriptr[--elements]; + ictx->meta = meta; ictx->ctx.fdtmpin = -1; ictx->ctx.ctx.units = ictx->units; + ictx->ctx.ctx.errv = ictx->ctx.errinfp; return &ictx->ctx; } diff --git a/src/internal/mdso_driver_impl.h b/src/internal/mdso_driver_impl.h index a697528..c6131b8 100644 --- a/src/internal/mdso_driver_impl.h +++ b/src/internal/mdso_driver_impl.h @@ -32,6 +32,10 @@ struct mdso_driver_ctx_impl { char * asmbase; int fddst; int fdtmpin; + struct mdso_error_info**errinfp; + struct mdso_error_info**erricap; + struct mdso_error_info *erriptr[64]; + struct mdso_error_info erribuf[64]; }; struct mdso_unit_ctx_impl {