summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2015-09-09 14:00:37 +0100
committerVincent Sanders <vince@kyllikki.org>2015-09-09 14:00:37 +0100
commit73c6476112181bd5e151be719dde7d5cd48e14c3 (patch)
tree9466e1faa0d94c4c237467acf7b4b9edb4513240
parent410f6fdb9ef5e12506dd50ae6dc74ebc4a06dae4 (diff)
downloadnetsurf-73c6476112181bd5e151be719dde7d5cd48e14c3.tar.gz
netsurf-73c6476112181bd5e151be719dde7d5cd48e14c3.tar.bz2
Fix instanceof to be correct and improve documentation of stack contents
-rw-r--r--javascript/dukky.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/javascript/dukky.c b/javascript/dukky.c
index 0358a572e..3b7ca4725 100644
--- a/javascript/dukky.c
+++ b/javascript/dukky.c
@@ -42,29 +42,30 @@ duk_bool_t
dukky_instanceof_at(duk_context *ctx, duk_idx_t _idx, const char *klass)
{
duk_idx_t idx = duk_normalize_index(ctx, _idx);
- /* ... ??? */
+ /* ... ??? ... */
if (!duk_check_type(ctx, idx, DUK_TYPE_OBJECT)) {
return false;
}
- /* ... obj */
+ /* ... obj ... */
duk_get_global_string(ctx, "\xFF\xFFNETSURF_DUKTAPE_PROTOTYPES");
- /* ... obj protos */
- duk_get_prop_string(ctx, idx, klass);
- /* ... obj protos goalproto */
+ /* ... obj ... protos */
+ duk_get_prop_string(ctx, -1, klass);
+ /* ... obj ... protos goalproto */
duk_get_prototype(ctx, idx);
- /* ... obj protos goalproto proto? */
+ /* ... obj ... protos goalproto proto? */
while (!duk_is_undefined(ctx, -1)) {
if (duk_strict_equals(ctx, -1, -2)) {
duk_pop_3(ctx);
+ /* ... obj ... */
return true;
}
duk_get_prototype(ctx, -1);
- /* ... obj protos goalproto proto proto? */
+ /* ... obj ... protos goalproto proto proto? */
duk_replace(ctx, -2);
- /* ... obj protos goalproto proto? */
+ /* ... obj ... protos goalproto proto? */
}
duk_pop_3(ctx);
- /* ... obj */
+ /* ... obj ... */
return false;
}