Browse Source

Merge pull request #105538 from clayjohn/rid_owner-validation

Remove 2^31 cap on RID allocations
Thaddeus Crews 4 months ago
parent
commit
6c35474568
1 changed files with 2 additions and 3 deletions
  1. 2 3
      core/templates/rid_owner.h

+ 2 - 3
core/templates/rid_owner.h

@@ -164,8 +164,7 @@ class RID_Alloc : public RID_AllocBase {
 		uint32_t free_chunk = free_index / elements_in_chunk;
 		uint32_t free_element = free_index % elements_in_chunk;
 
-		uint32_t validator = (uint32_t)(_gen_id() & 0x7FFFFFFF);
-		CRASH_COND_MSG(validator == 0x7FFFFFFF, "Overflow in RID validator");
+		uint32_t validator = 1 + (uint32_t)(_gen_id() % 0x7FFFFFFF);
 		uint64_t id = validator;
 		id <<= 32;
 		id |= free_index;
@@ -329,7 +328,7 @@ public:
 
 		uint32_t validator = uint32_t(id >> 32);
 
-		bool owned = (validator != 0x7FFFFFFF) && (chunks[idx_chunk][idx_element].validator & 0x7FFFFFFF) == validator;
+		bool owned = (chunks[idx_chunk][idx_element].validator & 0x7FFFFFFF) == validator;
 
 		if constexpr (THREAD_SAFE) {
 			mutex.unlock();