From 9df5620f5bbd571a00c1a9aa8567f2efe1974880 Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Fri, 20 Jan 2023 22:34:08 +0000 Subject: Catch C++ xapian exceptions and raise them as scheme exceptions. Uncaught C++ exceptions crash the guile process without providing scheme code any opportunity to respond. * except.i, xapian/error.scm: New files. * xapian.i.in: Include except.i. * Makefile.am (SOURCES): Add xapian/error.scm. (xapian_wrap.cc xapian/wrap.scm &): Depend on except.i. --- xapian/error.scm | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 xapian/error.scm (limited to 'xapian') diff --git a/xapian/error.scm b/xapian/error.scm new file mode 100644 index 0000000..4187dda --- /dev/null +++ b/xapian/error.scm @@ -0,0 +1,30 @@ +;;; guile-xapian --- Guile bindings for Xapian +;;; Copyright © 2023 Arun Isaac +;;; +;;; This file is part of guile-xapian. +;;; +;;; guile-xapian is free software: you can redistribute it and/or +;;; modify it under the terms of the GNU General Public License as +;;; published by the Free Software Foundation, either version 2 of the +;;; License, or (at your option) any later version. +;;; +;;; guile-xapian is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;;; General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with guile-xapian. If not, see +;;; . + +(define-module (xapian error) + #:use-module (rnrs conditions) + #:use-module (rnrs exceptions) + #:export (raise-xapian-exception)) + +(define-condition-type &xapian-error &error + make-xapian-error xapian-error? + (message xapian-error-message)) + +(define (raise-xapian-exception message) + (raise (make-xapian-error message))) -- cgit v1.2.3