Skip to content

Commit 1c4f6ed

Browse files
GotenJBZsherry-x
authored andcommitted
ensure ObjectCore exists before short-circuit
1 parent da63178 commit 1c4f6ed

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

aptos-move/framework/aptos-framework/doc/object.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2301,15 +2301,16 @@ Return true if the provided address has indirect or direct ownership of the prov
23012301

23022302
<pre><code><b>public</b> <b>fun</b> <a href="object.md#0x1_object_owns">owns</a>&lt;T: key&gt;(<a href="object.md#0x1_object">object</a>: <a href="object.md#0x1_object_Object">Object</a>&lt;T&gt;, owner: <b>address</b>): bool <b>acquires</b> <a href="object.md#0x1_object_ObjectCore">ObjectCore</a> {
23032303
<b>let</b> current_address = <a href="object.md#0x1_object_object_address">object_address</a>(&<a href="object.md#0x1_object">object</a>);
2304-
<b>if</b> (current_address == owner) {
2305-
<b>return</b> <b>true</b>
2306-
};
23072304

23082305
<b>assert</b>!(
23092306
<b>exists</b>&lt;<a href="object.md#0x1_object_ObjectCore">ObjectCore</a>&gt;(current_address),
23102307
<a href="../../aptos-stdlib/../move-stdlib/doc/error.md#0x1_error_not_found">error::not_found</a>(<a href="object.md#0x1_object_EOBJECT_DOES_NOT_EXIST">EOBJECT_DOES_NOT_EXIST</a>),
23112308
);
23122309

2310+
<b>if</b> (current_address == owner) {
2311+
<b>return</b> <b>true</b>
2312+
};
2313+
23132314
<b>let</b> <a href="object.md#0x1_object">object</a> = <b>borrow_global</b>&lt;<a href="object.md#0x1_object_ObjectCore">ObjectCore</a>&gt;(current_address);
23142315
<b>let</b> current_address = <a href="object.md#0x1_object">object</a>.owner;
23152316

aptos-move/framework/aptos-framework/sources/object.move

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -662,15 +662,16 @@ module aptos_framework::object {
662662
/// Return true if the provided address has indirect or direct ownership of the provided object.
663663
public fun owns<T: key>(object: Object<T>, owner: address): bool acquires ObjectCore {
664664
let current_address = object_address(&object);
665-
if (current_address == owner) {
666-
return true
667-
};
668665

669666
assert!(
670667
exists<ObjectCore>(current_address),
671668
error::not_found(EOBJECT_DOES_NOT_EXIST),
672669
);
673670

671+
if (current_address == owner) {
672+
return true
673+
};
674+
674675
let object = borrow_global<ObjectCore>(current_address);
675676
let current_address = object.owner;
676677

0 commit comments

Comments
 (0)