diff options
| author | kr.angelov <kr.angelov@gmail.com> | 2013-09-04 10:06:07 +0000 |
|---|---|---|
| committer | kr.angelov <kr.angelov@gmail.com> | 2013-09-04 10:06:07 +0000 |
| commit | 805f95eac61ef17d7ec3f87dda1dfbc932951dee (patch) | |
| tree | 62ab374454b87aa4d7d04bbee18ead8a4cbace37 /src/runtime/c/gu/exn.c | |
| parent | ae87c3d272104a933d148a544c9eab15865c1758 (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.c | 26 |
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, _); |
