Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 * vim: sw=4 ts=4 et :
3 */
4 /* This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
8 #include <stdio.h>
10 #if defined(XP_WIN)
11 # define MOZALLOC_EXPORT __declspec(dllexport)
12 #endif
14 #include "mozalloc_abort.h"
16 #define MOZALLOC_DONT_WRAP_RAISE_FUNCTIONS
17 #include "mozilla/throw_msvc.h"
19 __declspec(noreturn) static void abort_from_exception(const char* const which,
20 const char* const what);
21 static void
22 abort_from_exception(const char* const which, const char* const what)
23 {
24 fprintf(stderr, "fatal: STL threw %s: ", which);
25 mozalloc_abort(what);
26 }
28 namespace std {
30 // NB: user code is not supposed to touch the std:: namespace. We're
31 // doing this after careful review because we want to define our own
32 // exception throwing semantics. Don't try this at home!
34 void
35 moz_Xinvalid_argument(const char* what)
36 {
37 abort_from_exception("invalid_argument", what);
38 }
40 void
41 moz_Xlength_error(const char* what)
42 {
43 abort_from_exception("length_error", what);
44 }
46 void
47 moz_Xout_of_range(const char* what)
48 {
49 abort_from_exception("out_of_range", what);
50 }
52 void
53 moz_Xoverflow_error(const char* what)
54 {
55 abort_from_exception("overflow_error", what);
56 }
58 void
59 moz_Xruntime_error(const char* what)
60 {
61 abort_from_exception("runtime_error", what);
62 }
64 } // namespace std