summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog11
-rw-r--r--hieroglyph/operator.c24
-rw-r--r--hieroglyph/version.h.in2
3 files changed, 28 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index ce71ca0..d1b5b54 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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$";