fix ring buffer stomping in async match

This commit is contained in:
Ryan Fleury
2024-11-12 13:20:30 -08:00
parent a8b1805749
commit e95afcd5aa
2 changed files with 5 additions and 2 deletions
+4 -1
View File
@@ -1624,7 +1624,10 @@ di_match_store_section_kind_from_name(DI_MatchStore *store, String8 name, U64 en
{
U64 unconsumed_size = store->u2m_ring_write_pos - store->u2m_ring_read_pos;
U64 available_size = store->u2m_ring_size - unconsumed_size;
if(available_size >= sizeof(U64) + name.size)
U64 needed_size = sizeof(&node) + sizeof(U64) + sizeof(U64) + name.size;
needed_size += 7;
needed_size -= needed_size%8;
if(available_size >= needed_size)
{
store->u2m_ring_write_pos += ring_write_struct(store->u2m_ring_base, store->u2m_ring_size, store->u2m_ring_write_pos, &node);
store->u2m_ring_write_pos += ring_write_struct(store->u2m_ring_base, store->u2m_ring_size, store->u2m_ring_write_pos, &node->alloc_gen);
+1 -1
View File
@@ -8893,7 +8893,7 @@ EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_DEF(scheduler_process)
E_Expr *expr = e_push_expr(arena, E_ExprKind_LeafOffset, 0);
expr->space = rd_eval_space_from_ctrl_entity(thread, RD_EvalSpaceKind_MetaCtrlEntity);
expr->mode = E_Mode_Offset;
expr->type_key = e_type_key_cons_base(type(CTRL_ThreadMetaEval));;
expr->type_key = e_type_key_cons_base(type(CTRL_ThreadMetaEval));
info.row_strings[row_expr_idx] = push_str8f(arena, "thread:%S", thread->string);
info.row_exprs[row_expr_idx] = expr;
info.row_members[row_expr_idx] = &e_member_nil;