aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--i386-gen.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/i386-gen.c b/i386-gen.c
index 8d28c27..85f101b 100644
--- a/i386-gen.c
+++ b/i386-gen.c
@@ -83,10 +83,15 @@ static unsigned long func_sub_sp_offset;
static unsigned long func_bound_offset;
static int func_ret_sub;
+/* XXX: make it faster ? */
void g(int c)
{
+ int ind1;
+ ind1 = ind + 1;
+ if (ind1 > cur_text_section->data_allocated)
+ section_realloc(cur_text_section, ind1);
cur_text_section->data[ind] = c;
- ind++;
+ ind = ind1;
}
void o(int c)
@@ -129,10 +134,15 @@ void gsym(int t)
/* instruction + 4 bytes data. Return the address of the data */
int oad(int c, int s)
{
+ int ind1;
+
o(c);
+ ind1 = ind + 4;
+ if (ind1 > cur_text_section->data_allocated)
+ section_realloc(cur_text_section, ind1);
*(int *)(cur_text_section->data + ind) = s;
s = ind;
- ind = ind + 4;
+ ind = ind1;
return s;
}