AstEnumValue *ev = *pev;
output_unsigned_integer(get_expression_integer_value(ev->value, NULL), §ion_buff);
- output_unsigned_integer(ev->token->length, §ion_buff);
- bh_buffer_append(§ion_buff, ev->token->text, ev->token->length);
+ output_name(ev->token->text, ev->token->length, §ion_buff);
}
continue;
}
continue;
}
+ if (type->kind == Type_Kind_DynArray) {
+ output_unsigned_integer(7, §ion_buff);
+ output_unsigned_integer(type->DynArray.elem->id, §ion_buff);
+ continue;
+ }
+
if (type_is_structlike_strict(type)) {
output_unsigned_integer(3, §ion_buff);
#include <ctype.h>
+#define MAX_SLICE_LENGTH 64
+
static char write_buf[4096];
#define WRITE(str) do { \
debug_type_info_t *elem_type = &builder->info->types[type_id];
b32 count_overflowed = 0;
- if (count > 256) {
- count = 256;
+ if (count > MAX_SLICE_LENGTH) {
+ count = MAX_SLICE_LENGTH;
count_overflowed = 1;
}
count = *ptr_loc;
}
+ if (count > MAX_SLICE_LENGTH * 4) {
+ count = MAX_SLICE_LENGTH * 4;
+ }
+
return count;
}
}
builder->it_type = type->modifier.modified_type;
builder->it_has_children = get_subvalues_for_type(builder, builder->it_type) > 0;
- // builder->it_loc_kind = debug_sym_loc_global;
- // builder->it_loc = builder->base_loc;
if (builder->base_loc_kind == debug_sym_loc_register) {
ovm_value_t value;
if (lookup_register_in_frame(builder->ovm_state, builder->ovm_frame, builder->base_loc, &value)) {
if (type->kind == debug_type_kind_structure) {
debug_type_structure_member_t *mem = &type->structure.members[builder->it_index];
- snprintf(tmp_buffer, 2048, "%s", mem->name);
- strncpy(name_buffer, tmp_buffer, 2048);
-
- builder->it_name = name_buffer;
+ builder->it_name = mem->name;
builder->it_has_children = get_subvalues_for_type(builder, mem->type) > 0;
builder->it_type = mem->type;
}
}
- send(debug->client_fd, debug->send_buffer.data, debug->send_buffer.length, 0);
- bh_buffer_clear(&debug->send_buffer);
+ if (debug->send_buffer.length > 0) {
+ send(debug->client_fd, &debug->send_buffer.length, sizeof(i32), 0);
+ send(debug->client_fd, debug->send_buffer.data, debug->send_buffer.length, 0);
+ bh_buffer_clear(&debug->send_buffer);
+ }
bh_arena_clear(&debug->tmp_arena);
}