aboutsummaryrefslogtreecommitdiff
path: root/src/embind/embind.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/embind/embind.js')
-rwxr-xr-xsrc/embind/embind.js20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/embind/embind.js b/src/embind/embind.js
index 78f54e31..cadee700 100755
--- a/src/embind/embind.js
+++ b/src/embind/embind.js
@@ -1061,8 +1061,24 @@ ClassHandle.prototype.isAliasOf = function(other) {
if (!(other instanceof ClassHandle)) {
return false;
}
- return this.$$.ptr == other.$$.ptr;
-}
+
+ var leftClass = this.$$.ptrType.registeredClass;
+ var left = this.$$.ptr;
+ var rightClass = other.$$.ptrType.registeredClass;
+ var right = other.$$.ptr;
+
+ while (leftClass.baseClass) {
+ left = leftClass.upcast(left);
+ leftClass = leftClass.baseClass;
+ }
+
+ while (rightClass.baseClass) {
+ right = rightClass.upcast(right);
+ rightClass = rightClass.baseClass;
+ }
+
+ return leftClass === rightClass && left === right;
+};
ClassHandle.prototype.clone = function() {
if (!this.$$.ptr) {