diff options
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | hieroglyph/operator.c | 24 | ||||
-rw-r--r-- | hieroglyph/version.h.in | 2 |
3 files changed, 28 insertions, 9 deletions
@@ -1,3 +1,14 @@ +2006-08-18 Akira TAGOH <at@gclab.org> + + * hieroglyph/operator.c (_hg_operator_op_for): check the executeonly + flag. + (_hg_operator_op_forall): likewise. + (_hg_operator_op_if): likewise. + (_hg_operator_op_ifelse): likewise. + (_hg_operator_op_loop): likewise. + (_hg_operator_op_repeat): likewise. + (_hg_operator_op_stopped): likewise. + 2006-08-16 Akira TAGOH <at@gclab.org> * hieroglyph/operator.c (_hg_operator_op_search): implemented. diff --git a/hieroglyph/operator.c b/hieroglyph/operator.c index 8cc8445..8d931bf 100644 --- a/hieroglyph/operator.c +++ b/hieroglyph/operator.c @@ -3187,7 +3187,8 @@ G_STMT_START break; } if (!hg_object_is_executable((HgObject *)nproc) || - !hg_object_is_readable((HgObject *)nproc)) { + (!hg_object_is_readable((HgObject *)nproc) && + !hg_object_is_executeonly((HgObject *)nproc))) { _hg_operator_set_error(vm, op, VM_e_invalidaccess); break; } @@ -3271,7 +3272,8 @@ G_STMT_START break; } if (!hg_object_is_executable((HgObject *)nproc) || - !hg_object_is_readable((HgObject *)nproc) || + (!hg_object_is_readable((HgObject *)nproc) && + !hg_object_is_executeonly((HgObject *)nproc)) || !hg_object_is_readable((HgObject *)nval)) { _hg_operator_set_error(vm, op, VM_e_invalidaccess); break; @@ -3708,7 +3710,8 @@ G_STMT_START break; } if (!hg_object_is_executable((HgObject *)nif) || - !hg_object_is_readable((HgObject *)nif)) { + (!hg_object_is_readable((HgObject *)nif) && + !hg_object_is_executeonly((HgObject *)nif))) { _hg_operator_set_error(vm, op, VM_e_invalidaccess); break; } @@ -3755,8 +3758,10 @@ G_STMT_START } if (!hg_object_is_executable((HgObject *)nif) || !hg_object_is_executable((HgObject *)nelse) || - !hg_object_is_readable((HgObject *)nif) || - !hg_object_is_readable((HgObject *)nelse)) { + (!hg_object_is_readable((HgObject *)nif) && + !hg_object_is_executeonly((HgObject *)nif)) || + (!hg_object_is_readable((HgObject *)nelse) && + !hg_object_is_executeonly((HgObject *)nelse))) { _hg_operator_set_error(vm, op, VM_e_invalidaccess); break; } @@ -4154,7 +4159,8 @@ G_STMT_START break; } if (!hg_object_is_executable((HgObject *)nproc) || - !hg_object_is_readable((HgObject *)nproc)) { + (!hg_object_is_readable((HgObject *)nproc) && + !hg_object_is_executeonly((HgObject *)nproc))) { _hg_operator_set_error(vm, op, VM_e_invalidaccess); break; } @@ -5222,7 +5228,8 @@ G_STMT_START break; } if (!hg_object_is_executable((HgObject *)nproc) || - !hg_object_is_readable((HgObject *)nproc)) { + (!hg_object_is_readable((HgObject *)nproc) && + !hg_object_is_executeonly((HgObject *)nproc))) { _hg_operator_set_error(vm, op, VM_e_invalidaccess); break; } @@ -6151,7 +6158,8 @@ G_STMT_START break; } node = hg_stack_index(ostack, 0); - if (!hg_object_is_readable((HgObject *)node)) { + if (!hg_object_is_readable((HgObject *)node) && + !hg_object_is_executeonly((HgObject *)node)) { _hg_operator_set_error(vm, op, VM_e_invalidaccess); break; } diff --git a/hieroglyph/version.h.in b/hieroglyph/version.h.in index 09b9073..a4d0e53 100644 --- a/hieroglyph/version.h.in +++ b/hieroglyph/version.h.in @@ -29,7 +29,7 @@ G_BEGIN_DECLS #define HIEROGLYPH_VERSION "@VERSION@" -#define HIEROGLYPH_UUID "6d555f05-c156-4255-8a61-9185be8e59b3" +#define HIEROGLYPH_UUID "75924ba9-fa1b-47b1-a2dc-ac40e1676a63" const char *__hg_rcsid G_GNUC_UNUSED = "$Rev$"; |