Skip to content

Conversation

@fallchildren
Copy link

@fallchildren fallchildren commented Aug 24, 2022

The following steps should illustrate the problem:

  1. Object A is freshly constructed and gets an _objectID of 0.
  2. ManagedWeakReference of A is created -> savedObjectID will be also 0
  3. ObjectManager::persist is called and A gets a validi _objectID
  4. ManagedWeakReference of A will still have the savedObjectID of 0
    and will result in wrong behaviour of == and !=

To circumvent these this commit changes the case when one of the
compared ManagedWeakReference instances has a savedObjectID of 0 and
checks the actual reference object for the real _objectID.

The issue was found when investigating https://www.swgemu.com/bugs/view.php?id=8229
A reordering fix for the Mantis bug is also on the swgemu gerrit instance see https://review.swgemu.com/c/Core3/+/8940

@fallchildren fallchildren force-pushed the managedweakref_compare_issues branch from 896d66a to 32449f4 Compare August 25, 2022 16:49
The following steps should illustrate the problem:

1. Object A is freshly constructed and gets an _objectID of 0.
2. ManagedWeakReference of A is created -> savedObjectID will be also 0
3. ObjectManager::persist is called and A gets a validi _objectID
4. ManagedWeakReference of A will still have the savedObjectID of 0
   and will result in wrong behaviour of == and !=

To circumvent these this commit changes the case when one of the
compared ManagedWeakReference instances has a savedObjectID of 0 and
checks the actual reference object for the real _objectID.
@fallchildren fallchildren force-pushed the managedweakref_compare_issues branch from 32449f4 to 1031682 Compare August 25, 2022 16:50
@fallchildren
Copy link
Author

Reworked the logic to make it more clear and all cases are handled and no unnecessary call to getReferenceUnsafeNoReload is done .

swgemu2deploy pushed a commit that referenced this pull request Apr 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant