Redfoxmoon / cross / slibtool

Forked from cross/slibtool a year ago
Clone

f0c096 slbt_exec_ctx_alloc(): account for link-specific objects.

Authored and Committed by midipix 9 years ago
    slbt_exec_ctx_alloc(): account for link-specific objects.
    
        
file modified
+12 -1
src/logic/slbt_exec_ctx.c CHANGED
@@ -67,7 +67,7 @@ static struct slbt_exec_ctx_impl * slbt_exec_ctx_alloc(
67
67
68
68
/* clerical [worst-case] buffer size (guard, .libs, version) */
69
69
size = strlen(".lo") + sizeof('\0');
70
- size += 6 * (strlen(".libs/") + sizeof('\0'));
70
+ size += 8 * (strlen(".libs/") + sizeof('\0'));
71
71
size += 36 * (strlen(".0000") + sizeof('\0'));
72
72
73
73
/* buffer size (cargv, -Wc) */
@@ -87,6 +87,17 @@ static struct slbt_exec_ctx_impl * slbt_exec_ctx_alloc(
87
87
/* buffer size (.libs/%.o, pessimistic) */
88
88
size += argc * strlen(".libs/");
89
89
90
+ /* buffer size (linking) */
91
+ if (dctx->cctx->mode == SLBT_MODE_LINK)
92
+ size += strlen(dctx->cctx->settings.arprefix) + sizeof('\0')
93
+ + strlen(dctx->cctx->settings.arsuffix) + sizeof('\0')
94
+ + strlen(dctx->cctx->settings.dsoprefix) + sizeof('\0')
95
+ + strlen(dctx->cctx->settings.dsoprefix) + sizeof('\0')
96
+ + strlen(dctx->cctx->settings.exeprefix) + sizeof('\0')
97
+ + strlen(dctx->cctx->settings.exeprefix) + sizeof('\0')
98
+ + strlen(dctx->cctx->settings.impprefix) + sizeof('\0')
99
+ + strlen(dctx->cctx->settings.impprefix) + sizeof('\0');
100
+
90
101
/* alloc */
91
102
if (!(args = malloc(size)))
92
103
return 0;