ReactOS  0.4.14-dev-614-gbfd8a84
error.c
Go to the documentation of this file.
1 /*
2  * Copyright 2009 Piotr Caban
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18 
19 #ifdef __REACTOS__
20 #include <wine/config.h>
21 #include <wine/port.h>
22 #endif
23 
24 #include <math.h>
25 
26 #include "jscript.h"
27 
28 #include "wine/debug.h"
29 
31 
32 static const WCHAR descriptionW[] = {'d','e','s','c','r','i','p','t','i','o','n',0};
33 static const WCHAR messageW[] = {'m','e','s','s','a','g','e',0};
34 static const WCHAR nameW[] = {'n','a','m','e',0};
35 static const WCHAR numberW[] = {'n','u','m','b','e','r',0};
36 static const WCHAR toStringW[] = {'t','o','S','t','r','i','n','g',0};
37 
38 /* ECMA-262 3rd Edition 15.11.4.4 */
40  unsigned argc, jsval_t *argv, jsval_t *r)
41 {
42  jsdisp_t *jsthis;
43  jsstr_t *name = NULL, *msg = NULL, *ret = NULL;
44  jsval_t v;
45  HRESULT hres;
46 
47  static const WCHAR object_errorW[] = {'[','o','b','j','e','c','t',' ','E','r','r','o','r',']',0};
48 
49  TRACE("\n");
50 
51  jsthis = get_jsdisp(vthis);
52  if(!jsthis || ctx->version < 2) {
53  if(r) {
54  jsstr_t *str;
55 
56  str = jsstr_alloc(object_errorW);
57  if(!str)
58  return E_OUTOFMEMORY;
59  *r = jsval_string(str);
60  }
61  return S_OK;
62  }
63 
64  hres = jsdisp_propget_name(jsthis, nameW, &v);
65  if(FAILED(hres))
66  return hres;
67 
68  if(!is_undefined(v)) {
69  hres = to_string(ctx, v, &name);
71  if(FAILED(hres))
72  return hres;
73  }
74 
75  hres = jsdisp_propget_name(jsthis, messageW, &v);
76  if(SUCCEEDED(hres)) {
77  if(!is_undefined(v)) {
78  hres = to_string(ctx, v, &msg);
80  }
81  }
82 
83  if(SUCCEEDED(hres)) {
84  unsigned name_len = name ? jsstr_length(name) : 0;
85  unsigned msg_len = msg ? jsstr_length(msg) : 0;
86 
87  if(name_len && msg_len) {
88  WCHAR *ptr;
89 
90  ret = jsstr_alloc_buf(name_len + msg_len + 2, &ptr);
91  if(ret) {
93  ptr[name_len] = ':';
94  ptr[name_len+1] = ' ';
95  jsstr_flush(msg, ptr+name_len+2);
96  }else {
98  }
99  }else if(name_len) {
100  ret = name;
101  name = NULL;
102  }else if(msg_len) {
103  ret = msg;
104  msg = NULL;
105  }else {
106  ret = jsstr_alloc(object_errorW);
107  }
108  }
109 
110  if(msg)
112  if(name)
114  if(FAILED(hres))
115  return hres;
116  if(!ret)
117  return E_OUTOFMEMORY;
118 
119  if(r)
120  *r = jsval_string(ret);
121  else
123  return S_OK;
124 }
125 
127  unsigned argc, jsval_t *argv, jsval_t *r)
128 {
129  TRACE("\n");
130 
131  switch(flags) {
132  case INVOKE_FUNC:
134  default:
135  FIXME("unimplemented flags %x\n", flags);
136  return E_NOTIMPL;
137  }
138 
139  return S_OK;
140 }
141 
142 static const builtin_prop_t Error_props[] = {
144 };
145 
146 static const builtin_info_t Error_info = {
148  {NULL, Error_value, 0},
150  Error_props,
151  NULL,
152  NULL
153 };
154 
157  {NULL, Error_value, 0},
158  0,
159  NULL,
160  NULL,
161  NULL
162 };
163 
164 static HRESULT alloc_error(script_ctx_t *ctx, jsdisp_t *prototype,
165  jsdisp_t *constr, jsdisp_t **ret)
166 {
167  jsdisp_t *err;
168  HRESULT hres;
169 
170  err = heap_alloc_zero(sizeof(*err));
171  if(!err)
172  return E_OUTOFMEMORY;
173 
174  if(prototype)
175  hres = init_dispex(err, ctx, &Error_info, prototype);
176  else
178  constr ? constr : ctx->error_constr);
179  if(FAILED(hres)) {
180  heap_free(err);
181  return hres;
182  }
183 
184  *ret = err;
185  return S_OK;
186 }
187 
190 {
191  jsdisp_t *err;
192  HRESULT hres;
193 
194  hres = alloc_error(ctx, NULL, constr, &err);
195  if(FAILED(hres))
196  return hres;
197 
200  if(FAILED(hres)) {
202  return hres;
203  }
204 
207  jsval_string(msg));
208  if(SUCCEEDED(hres))
210  jsval_string(msg));
211  if(FAILED(hres)) {
213  return hres;
214  }
215 
216  *ret = err;
217  return S_OK;
218 }
219 
221  jsval_t *r, jsdisp_t *constr) {
222  jsdisp_t *err;
223  UINT num = 0;
224  jsstr_t *msg = NULL;
225  HRESULT hres;
226 
227  if(argc) {
228  double n;
229 
230  hres = to_number(ctx, argv[0], &n);
231  if(FAILED(hres)) /* FIXME: really? */
232  n = NAN;
233  if(isnan(n))
234  hres = to_string(ctx, argv[0], &msg);
235  if(FAILED(hres))
236  return hres;
237  num = n;
238  }
239 
240  if(!msg) {
241  if(argc > 1) {
242  hres = to_string(ctx, argv[1], &msg);
243  if(FAILED(hres))
244  return hres;
245  }else {
246  msg = jsstr_empty();
247  }
248  }
249 
250  switch(flags) {
251  case INVOKE_FUNC:
252  case DISPATCH_CONSTRUCT:
253  hres = create_error(ctx, constr, num, msg, &err);
255  if(FAILED(hres))
256  return hres;
257 
258  if(r)
259  *r = jsval_obj(err);
260  else
262  return S_OK;
263 
264  default:
265  if(msg)
267  FIXME("unimplemented flags %x\n", flags);
268  return E_NOTIMPL;
269  }
270 }
271 
273  unsigned argc, jsval_t *argv, jsval_t *r)
274 {
275  TRACE("\n");
276  return error_constr(ctx, flags, argc, argv, r, ctx->error_constr);
277 }
278 
280  unsigned argc, jsval_t *argv, jsval_t *r)
281 {
282  TRACE("\n");
283  return error_constr(ctx, flags, argc, argv, r, ctx->eval_error_constr);
284 }
285 
287  unsigned argc, jsval_t *argv, jsval_t *r)
288 {
289  TRACE("\n");
290  return error_constr(ctx, flags, argc, argv, r, ctx->range_error_constr);
291 }
292 
294  unsigned argc, jsval_t *argv, jsval_t *r)
295 {
296  TRACE("\n");
297  return error_constr(ctx, flags, argc, argv, r, ctx->reference_error_constr);
298 }
299 
301  unsigned argc, jsval_t *argv, jsval_t *r)
302 {
303  TRACE("\n");
304  return error_constr(ctx, flags, argc, argv, r, ctx->regexp_error_constr);
305 }
306 
308  unsigned argc, jsval_t *argv, jsval_t *r)
309 {
310  TRACE("\n");
311  return error_constr(ctx, flags, argc, argv, r, ctx->syntax_error_constr);
312 }
313 
315  unsigned argc, jsval_t *argv, jsval_t *r)
316 {
317  TRACE("\n");
318  return error_constr(ctx, flags, argc, argv, r, ctx->type_error_constr);
319 }
320 
322  unsigned argc, jsval_t *argv, jsval_t *r)
323 {
324  TRACE("\n");
325  return error_constr(ctx, flags, argc, argv, r, ctx->uri_error_constr);
326 }
327 
329 {
330  static const WCHAR ErrorW[] = {'E','r','r','o','r',0};
331  static const WCHAR EvalErrorW[] = {'E','v','a','l','E','r','r','o','r',0};
332  static const WCHAR RangeErrorW[] = {'R','a','n','g','e','E','r','r','o','r',0};
333  static const WCHAR ReferenceErrorW[] = {'R','e','f','e','r','e','n','c','e','E','r','r','o','r',0};
334  static const WCHAR RegExpErrorW[] = {'R','e','g','E','x','p','E','r','r','o','r',0};
335  static const WCHAR SyntaxErrorW[] = {'S','y','n','t','a','x','E','r','r','o','r',0};
336  static const WCHAR TypeErrorW[] = {'T','y','p','e','E','r','r','o','r',0};
337  static const WCHAR URIErrorW[] = {'U','R','I','E','r','r','o','r',0};
338  static const WCHAR *names[] = {ErrorW, EvalErrorW, RangeErrorW,
340  jsdisp_t **constr_addr[] = {&ctx->error_constr, &ctx->eval_error_constr,
343  &ctx->uri_error_constr};
347 
348  jsdisp_t *err;
349  unsigned int i;
350  jsstr_t *str;
351  HRESULT hres;
352 
353  for(i=0; i < ARRAY_SIZE(names); i++) {
354  hres = alloc_error(ctx, i==0 ? object_prototype : NULL, NULL, &err);
355  if(FAILED(hres))
356  return hres;
357 
358  str = jsstr_alloc(names[i]);
359  if(!str) {
361  return E_OUTOFMEMORY;
362  }
363 
365  jsval_string(str));
367  if(SUCCEEDED(hres))
368  hres = create_builtin_constructor(ctx, constr_val[i], names[i], NULL,
369  PROPF_CONSTR|1, err, constr_addr[i]);
370 
372  if(FAILED(hres))
373  return hres;
374  }
375 
376  return S_OK;
377 }
378 
380 {
381  WCHAR buf[1024], *pos = NULL;
382  jsdisp_t *err;
383  jsstr_t *msg;
384  HRESULT hres;
385 
386  if(!is_jscript_error(error))
387  return error;
388 
389  buf[0] = '\0';
391 
392  if(str) pos = wcschr(buf, '|');
393  if(pos) {
394  int len = lstrlenW(str);
395  memmove(pos+len, pos+1, (lstrlenW(pos+1)+1)*sizeof(WCHAR));
396  memcpy(pos, str, len*sizeof(WCHAR));
397  }
398 
399  WARN("%s\n", debugstr_w(buf));
400 
401  msg = jsstr_alloc(buf);
402  if(!msg)
403  return E_OUTOFMEMORY;
404 
405  hres = create_error(ctx, constr, error, msg, &err);
407  if(FAILED(hres))
408  return hres;
409 
410  jsval_release(ctx->ei.val);
411  ctx->ei.val = jsval_obj(err);
412  return error;
413 }
414 
416 {
417  return throw_error(ctx, error, str, ctx->error_constr);
418 }
419 
421 {
422  return throw_error(ctx, error, str, ctx->range_error_constr);
423 }
424 
426 {
427  return throw_error(ctx, error, str, ctx->reference_error_constr);
428 }
429 
431 {
432  return throw_error(ctx, error, str, ctx->regexp_error_constr);
433 }
434 
436 {
437  return throw_error(ctx, error, str, ctx->syntax_error_constr);
438 }
439 
441 {
442  return throw_error(ctx, error, str, ctx->type_error_constr);
443 }
444 
446 {
447  return throw_error(ctx, error, str, ctx->uri_error_constr);
448 }
#define PROPF_WRITABLE
Definition: jscript.h:101
Definition: jsval.h:54
static const WCHAR nameW[]
Definition: error.c:34
static jsstr_t * jsstr_alloc(const WCHAR *str)
Definition: jsstr.h:103
static const WCHAR RangeErrorW[]
Definition: global.c:41
static int argc
Definition: ServiceArgs.c:12
void jsval_release(jsval_t val)
Definition: jsutils.c:191
static HRESULT ReferenceErrorConstr_value(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: error.c:293
#define memmove(s1, s2, n)
Definition: mkisofs.h:881
jsdisp_t * reference_error_constr
Definition: jscript.h:450
HRESULT throw_range_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str)
Definition: error.c:420
static const WCHAR EvalErrorW[]
Definition: global.c:40
static HRESULT RegExpErrorConstr_value(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: error.c:300
static HRESULT EvalErrorConstr_value(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: error.c:279
static HRESULT TypeErrorConstr_value(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: error.c:314
jsdisp_t * type_error_constr
Definition: jscript.h:453
static HRESULT Error_toString(script_ctx_t *ctx, vdisp_t *vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: error.c:39
static HRESULT create_error(script_ctx_t *ctx, jsdisp_t *constr, UINT number, jsstr_t *msg, jsdisp_t **ret)
Definition: error.c:188
#define JS_E_FUNCTION_EXPECTED
Definition: jscript.h:552
static HRESULT SyntaxErrorConstr_value(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: error.c:307
Definition: jsstr.h:39
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
jsdisp_t * range_error_constr
Definition: jscript.h:449
static HRESULT Error_value(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: error.c:126
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
static HRESULT URIErrorConstr_value(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: error.c:321
#define WARN(fmt,...)
Definition: debug.h:111
HRESULT jsdisp_define_data_property(jsdisp_t *obj, const WCHAR *name, unsigned flags, jsval_t value)
Definition: dispex.c:1801
#define PROPF_CONSTR
Definition: jscript.h:98
HRESULT create_builtin_constructor(script_ctx_t *ctx, builtin_invoke_t value_proc, const WCHAR *name, const builtin_info_t *builtin_info, DWORD flags, jsdisp_t *prototype, jsdisp_t **ret)
Definition: function.c:686
GLdouble n
Definition: glext.h:7729
static const WCHAR messageW[]
Definition: error.c:33
static BOOL is_undefined(jsval_t v)
Definition: jsval.h:171
static unsigned jsstr_flush(jsstr_t *str, WCHAR *buf)
Definition: jsstr.h:148
static unsigned jsstr_length(jsstr_t *str)
Definition: jsstr.h:58
static void jsstr_release(jsstr_t *str)
Definition: jsstr.h:110
#define argv
Definition: mplay32.c:18
#define PROPF_ENUMERABLE
Definition: jscript.h:100
#define lstrlenW
Definition: compat.h:415
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
int32_t INT
Definition: typedefs.h:56
HRESULT throw_uri_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str)
Definition: error.c:445
jsdisp_t * syntax_error_constr
Definition: jscript.h:452
GLuint GLuint * names
Definition: glext.h:11545
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
jsdisp_t * error_constr
Definition: jscript.h:447
jsdisp_t * regexp_error_constr
Definition: jscript.h:451
static BOOL is_jscript_error(HRESULT hres)
Definition: jscript.h:575
HRESULT to_number(script_ctx_t *, jsval_t, double *) DECLSPEC_HIDDEN
Definition: jsutils.c:609
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
WINE_DEFAULT_DEBUG_CHANNEL(jscript)
static size_t double number
Definition: printf.c:69
#define debugstr_w
Definition: kernel32.h:32
#define FIXME(fmt,...)
Definition: debug.h:110
static PVOID ptr
Definition: dispmode.c:27
static HRESULT to_string(VARIANT *src, BSTR *dst)
Definition: host.c:48
const WCHAR * str
jsstr_t * jsstr_empty(void)
Definition: jsstr.c:288
smooth NULL
Definition: ftsmooth.c:416
jsval_t val
Definition: jscript.h:401
HRESULT throw_syntax_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str)
Definition: error.c:435
static const WCHAR numberW[]
Definition: error.c:35
DWORD version
Definition: jscript.h:420
static const WCHAR ErrorW[]
Definition: global.c:39
static HRESULT throw_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str, jsdisp_t *constr)
Definition: error.c:379
static jsval_t jsval_string(jsstr_t *str)
Definition: jsval.h:109
HRESULT init_error_constr(script_ctx_t *ctx, jsdisp_t *object_prototype)
Definition: error.c:328
static const WCHAR TypeErrorW[]
Definition: global.c:44
static jsdisp_t * get_jsdisp(vdisp_t *vdisp)
Definition: jscript.h:199
HINSTANCE jscript_hinstance
Definition: jscript_main.c:39
static const builtin_info_t ErrorInst_info
Definition: error.c:155
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
_CONST_RETURN wchar_t *__cdecl wcschr(_In_z_ const wchar_t *_Str, wchar_t _Ch)
HRESULT jsdisp_propget_name(jsdisp_t *obj, const WCHAR *name, jsval_t *val)
Definition: dispex.c:1408
__wchar_t WCHAR
Definition: xmlstorage.h:180
static const WCHAR SyntaxErrorW[]
Definition: global.c:43
LONG HRESULT
Definition: typedefs.h:77
unsigned short WORD
Definition: ntddk_ex.h:93
GLuint GLuint num
Definition: glext.h:9618
#define NAN
Definition: misc.c:46
static HRESULT RangeErrorConstr_value(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: error.c:286
GLbitfield flags
Definition: glext.h:7161
static const WCHAR URIErrorW[]
Definition: global.c:45
static HRESULT error_constr(script_ctx_t *ctx, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r, jsdisp_t *constr)
Definition: error.c:220
static const WCHAR ReferenceErrorW[]
Definition: global.c:42
static const builtin_info_t Error_info
Definition: error.c:146
int ret
static const builtin_prop_t Error_props[]
Definition: error.c:142
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
GLenum GLsizei len
Definition: glext.h:6722
#define err(...)
static HRESULT ErrorConstr_value(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: error.c:272
static const WCHAR toStringW[]
Definition: error.c:36
HRESULT throw_reference_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str)
Definition: error.c:425
int isnan(double x)
#define S_OK
Definition: intsafe.h:59
const GLdouble * v
Definition: gl.h:2040
#define PROPF_METHOD
Definition: jscript.h:97
#define ARRAY_SIZE(a)
Definition: main.h:24
#define E_NOTIMPL
Definition: ddrawi.h:99
static void jsdisp_release(jsdisp_t *jsdisp)
Definition: jscript.h:268
unsigned int UINT
Definition: ndis.h:50
HRESULT init_dispex(jsdisp_t *dispex, script_ctx_t *ctx, const builtin_info_t *builtin_info, jsdisp_t *prototype)
Definition: dispex.c:919
static jsval_t jsval_obj(jsdisp_t *obj)
Definition: jsval.h:125
static const WCHAR descriptionW[]
Definition: error.c:32
jsstr_t * jsstr_alloc_buf(unsigned len, WCHAR **buf)
Definition: jsstr.c:69
#define msg(x)
Definition: auth_time.c:54
#define HRESULT_CODE(hr)
Definition: winerror.h:76
Definition: name.c:38
HRESULT throw_type_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str)
Definition: error.c:440
jsdisp_t * eval_error_constr
Definition: jscript.h:448
HRESULT init_dispex_from_constr(jsdisp_t *dispex, script_ctx_t *ctx, const builtin_info_t *builtin_info, jsdisp_t *constr)
Definition: dispex.c:1030
HRESULT throw_generic_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str)
Definition: error.c:415
jsdisp_t * uri_error_constr
Definition: jscript.h:454
#define PROPF_CONFIGURABLE
Definition: jscript.h:102
EXPORT int error(char *fmt, va_alist)
Definition: error.c:46
jsexcept_t ei
Definition: jscript.h:425
#define SUCCEEDED(hr)
Definition: intsafe.h:57
HRESULT(* builtin_invoke_t)(script_ctx_t *, vdisp_t *, WORD, unsigned, jsval_t *, jsval_t *)
Definition: jscript.h:204
static const WCHAR RegExpErrorW[]
Definition: global.c:51
static jsval_t jsval_number(double n)
Definition: jsval.h:144
HRESULT throw_regexp_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str)
Definition: error.c:430
static BOOL heap_free(void *mem)
Definition: appwiz.h:75
static HRESULT alloc_error(script_ctx_t *ctx, jsdisp_t *prototype, jsdisp_t *constr, jsdisp_t **ret)
Definition: error.c:164
GLuint const GLchar * name
Definition: glext.h:6031