f0c096
slbt_exec_ctx_alloc(): account for link-specific objects.
@@ -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 +=
|
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;
|