summaryrefslogtreecommitdiff
path: root/src/runtime/c/gu/exn.c
diff options
context:
space:
mode:
authorkr.angelov <kr.angelov@gmail.com>2013-09-04 10:06:07 +0000
committerkr.angelov <kr.angelov@gmail.com>2013-09-04 10:06:07 +0000
commit805f95eac61ef17d7ec3f87dda1dfbc932951dee (patch)
tree62ab374454b87aa4d7d04bbee18ead8a4cbace37 /src/runtime/c/gu/exn.c
parentae87c3d272104a933d148a544c9eab15865c1758 (diff)
remove the dependency on the HAVE_STATEMENT_EXPRESSIONS flag. This reduces the dependency on the ./configure script
Diffstat (limited to 'src/runtime/c/gu/exn.c')
-rw-r--r--src/runtime/c/gu/exn.c26
1 files changed, 19 insertions, 7 deletions
diff --git a/src/runtime/c/gu/exn.c b/src/runtime/c/gu/exn.c
index ec68ec039..cdcf9c9f4 100644
--- a/src/runtime/c/gu/exn.c
+++ b/src/runtime/c/gu/exn.c
@@ -5,13 +5,14 @@
GuExn*
gu_new_exn(GuExn* parent, GuKind* catch, GuPool* pool)
{
- return gu_new_s(pool, GuExn,
- .state = GU_EXN_OK,
- .parent = parent,
- .catch = catch,
- .caught = NULL,
- .data.pool = pool,
- .data.data = NULL);
+ GuExn* exn = gu_new(GuExn, pool);
+ exn->state = GU_EXN_OK;
+ exn->parent = parent;
+ exn->catch = catch;
+ exn->caught = NULL;
+ exn->data.pool = pool;
+ exn->data.data = NULL;
+ return exn;
}
void
@@ -74,4 +75,15 @@ gu_exn_caught(GuExn* err)
return err->caught;
}
+void
+gu_raise_errno(GuExn* err)
+{
+ GuExnData* err_data = gu_raise(err, GuErrno);
+ if (err_data) {
+ GuErrno* gu_errno = gu_new(GuErrno, err_data->pool);
+ *gu_errno = errno;
+ err_data->data = gu_errno;
+ }
+}
+
GU_DEFINE_TYPE(GuErrno, signed, _);