ReactOS 0.4.17-dev-357-ga8f14ff
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#include <assert.h>
26#include <wchar.h>
27
28#include "jscript.h"
29#include "engine.h"
30
31#include "wine/debug.h"
32
34
35/* ECMA-262 3rd Edition 15.11.4.4 */
37 unsigned argc, jsval_t *argv, jsval_t *r)
38{
39 jsstr_t *name = NULL, *msg = NULL, *ret = NULL;
40 jsdisp_t *jsthis = NULL;
41 jsval_t v;
43
44 TRACE("\n");
45
46 if(is_object_instance(vthis))
47 jsthis = to_jsdisp(get_object(vthis));
48 else if(ctx->version >= SCRIPTLANGUAGEVERSION_ES5)
50
51 if(!jsthis || ctx->version < 2) {
52 if(r) {
53 jsstr_t *str;
54
55 str = jsstr_alloc(L"[object Error]");
56 if(!str)
57 return E_OUTOFMEMORY;
58 *r = jsval_string(str);
59 }
60 return S_OK;
61 }
62
63 hres = jsdisp_propget_name(jsthis, L"name", &v);
64 if(FAILED(hres))
65 return hres;
66
67 if(!is_undefined(v)) {
68 hres = to_string(ctx, v, &name);
70 if(FAILED(hres))
71 return hres;
72 }
73
74 hres = jsdisp_propget_name(jsthis, L"message", &v);
75 if(SUCCEEDED(hres)) {
76 if(!is_undefined(v)) {
77 hres = to_string(ctx, v, &msg);
79 }
80 }
81
82 if(SUCCEEDED(hres)) {
83 unsigned name_len = name ? jsstr_length(name) : 0;
84 unsigned msg_len = msg ? jsstr_length(msg) : 0;
85
86 if(name_len && msg_len) {
87 WCHAR *ptr;
88
89 ret = jsstr_alloc_buf(name_len + msg_len + 2, &ptr);
90 if(ret) {
92 ptr[name_len] = ':';
93 ptr[name_len+1] = ' ';
94 jsstr_flush(msg, ptr+name_len+2);
95 }else {
97 }
98 }else if(name_len) {
99 ret = name;
100 name = NULL;
101 }else if(msg_len) {
102 ret = msg;
103 msg = NULL;
104 }else {
105 ret = jsstr_alloc(L"[object Error]");
106 }
107 }
108
109 if(msg)
111 if(name)
113 if(FAILED(hres))
114 return hres;
115 if(!ret)
116 return E_OUTOFMEMORY;
117
118 if(r)
119 *r = jsval_string(ret);
120 else
122 return S_OK;
123}
124
126 unsigned argc, jsval_t *argv, jsval_t *r)
127{
128 TRACE("\n");
129
130 switch(flags) {
131 case INVOKE_FUNC:
133 default:
134 FIXME("unimplemented flags %x\n", flags);
135 return E_NOTIMPL;
136 }
137
138 return S_OK;
139}
140
141static const builtin_prop_t Error_props[] = {
142 {L"toString", Error_toString, PROPF_METHOD}
143};
144
147 .call = Error_value,
148 .props_cnt = ARRAY_SIZE(Error_props),
149 .props = Error_props,
150};
151
154 .call = Error_value,
155};
156
158 jsdisp_t *constr, jsdisp_t **ret)
159{
160 jsdisp_t *err;
162
163 err = calloc(1, sizeof(*err));
164 if(!err)
165 return E_OUTOFMEMORY;
166
167 if(prototype)
168 hres = init_dispex(err, ctx, &Error_info, prototype);
169 else
171 constr ? constr : ctx->error_constr);
172 if(FAILED(hres)) {
173 free(err);
174 return hres;
175 }
176
177 *ret = err;
178 return S_OK;
179}
180
183{
184 jsdisp_t *err;
186
187 hres = alloc_error(ctx, NULL, constr, &err);
188 if(FAILED(hres))
189 return hres;
190
193 if(FAILED(hres)) {
195 return hres;
196 }
197
201 if(SUCCEEDED(hres))
204 if(FAILED(hres)) {
206 return hres;
207 }
208
209 *ret = err;
210 return S_OK;
211}
212
214 jsval_t *r, jsdisp_t *constr) {
215 jsdisp_t *err;
216 UINT num = 0;
217 jsstr_t *msg = NULL;
219
220 if(argc) {
221 double n;
222
223 hres = to_number(ctx, argv[0], &n);
224 if(FAILED(hres)) /* FIXME: really? */
225 n = NAN;
226 if(isnan(n))
227 hres = to_string(ctx, argv[0], &msg);
228 if(FAILED(hres))
229 return hres;
230 num = n;
231 }
232
233 if(!msg) {
234 if(argc > 1) {
235 hres = to_string(ctx, argv[1], &msg);
236 if(FAILED(hres))
237 return hres;
238 }else {
239 msg = jsstr_empty();
240 }
241 }
242
243 switch(flags) {
244 case INVOKE_FUNC:
245 case DISPATCH_CONSTRUCT:
246 hres = create_error(ctx, constr, num, msg, &err);
248 if(FAILED(hres))
249 return hres;
250
251 if(r)
252 *r = jsval_obj(err);
253 else
255 return S_OK;
256
257 default:
258 if(msg)
260 FIXME("unimplemented flags %x\n", flags);
261 return E_NOTIMPL;
262 }
263}
264
266 unsigned argc, jsval_t *argv, jsval_t *r)
267{
268 TRACE("\n");
269 return error_constr(ctx, flags, argc, argv, r, ctx->error_constr);
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->eval_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->range_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->reference_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->regexp_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->syntax_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->type_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->uri_error_constr);
319}
320
322{
323 static const WCHAR *names[] = {L"Error", L"EvalError", L"RangeError",
324 L"ReferenceError", L"RegExpError", L"SyntaxError", L"TypeError", L"URIError"};
325 jsdisp_t **constr_addr[] = {&ctx->error_constr, &ctx->eval_error_constr,
326 &ctx->range_error_constr, &ctx->reference_error_constr, &ctx->regexp_error_constr,
327 &ctx->syntax_error_constr, &ctx->type_error_constr,
328 &ctx->uri_error_constr};
332
333 jsdisp_t *err;
334 unsigned int i;
335 jsstr_t *str;
337
338 for(i=0; i < ARRAY_SIZE(names); i++) {
339 hres = alloc_error(ctx, i==0 ? object_prototype : NULL, NULL, &err);
340 if(FAILED(hres))
341 return hres;
342
344 if(!str) {
346 return E_OUTOFMEMORY;
347 }
348
352 if(SUCCEEDED(hres))
353 hres = create_builtin_constructor(ctx, constr_val[i], names[i], NULL,
354 PROPF_CONSTR|1, err, constr_addr[i]);
355
357 if(FAILED(hres))
358 return hres;
359 }
360
361 return S_OK;
362}
363
365{
366 size_t len, arg_len = 0;
367 const WCHAR *res, *pos;
368 WCHAR *buf, *p;
369 jsstr_t *r;
370
372 return jsstr_empty();
373
375
376 pos = wmemchr(res, '|', len);
377 if(pos && arg)
378 arg_len = lstrlenW(arg);
379 r = jsstr_alloc_buf(len + arg_len - (pos ? 1 : 0), &buf);
380 if(!r)
381 return jsstr_empty();
382
383 p = buf;
384 if(pos > res) {
385 memcpy(p, res, (pos - res) * sizeof(WCHAR));
386 p += pos - res;
387 }
388 pos = pos ? pos + 1 : res;
389 if(arg_len) {
390 memcpy(p, arg, arg_len * sizeof(WCHAR));
391 p += arg_len;
392 }
393 if(pos != res + len)
394 memcpy(p, pos, (res + len - pos) * sizeof(WCHAR));
395 return r;
396}
397
399{
400 jsexcept_t *ei = ctx->ei;
401 TRACE("%08lx\n", error);
402 reset_ei(ei);
403 ei->error = error;
404 if(str)
406 return DISP_E_EXCEPTION;
407}
408
410{
411 TRACE("%08lx %s %s\n", ei->scode, debugstr_w(ei->bstrSource), debugstr_w(ei->bstrDescription));
412
413 reset_ei(ctx->ei);
414 if(ei->pfnDeferredFillIn)
415 ei->pfnDeferredFillIn(ei);
416 ctx->ei->error = (SUCCEEDED(ei->scode) || ei->scode == DISP_E_EXCEPTION) ? E_FAIL : ei->scode;
417 if(ei->bstrSource)
418 ctx->ei->source = jsstr_alloc_len(ei->bstrSource, SysStringLen(ei->bstrSource));
419 if(ei->bstrDescription)
420 ctx->ei->message = jsstr_alloc_len(ei->bstrDescription, SysStringLen(ei->bstrDescription));
421 SysFreeString(ei->bstrSource);
422 SysFreeString(ei->bstrDescription);
423 SysFreeString(ei->bstrHelpFile);
424}
425
426void set_error_location(jsexcept_t *ei, bytecode_t *code, unsigned loc, unsigned source_id, jsstr_t *line)
427{
428 if(is_jscript_error(ei->error)) {
429 if(!ei->source) {
430 const WCHAR *res;
431 size_t len;
432
435 }
436 if(!ei->message)
438 }
439
440 TRACE("source %s in %s\n", debugstr_w(code->source + loc), debugstr_w(code->source));
441
443 ei->loc = loc;
444 if(line)
445 ei->line = jsstr_addref(line);
446}
447
449{
450 jsdisp_t *constr = ctx->error_constr, *r;
451 jsexcept_t *ei = ctx->ei;
453
454 assert(FAILED(ei->error) && ei->error != DISP_E_EXCEPTION);
455
456 if(is_jscript_error(ei->error)) {
457 switch(ei->error) {
458 case JS_E_SYNTAX:
472 case JS_E_DISABLED_CC:
473 case JS_E_EXPECTED_AT:
475 constr = ctx->syntax_error_constr;
476 break;
477
479 case JS_E_INVALIDARG:
483 case JS_E_MISSING_ARG:
504 case JS_E_WRONG_THIS:
509 constr = ctx->type_error_constr;
510 break;
511
518 constr = ctx->range_error_constr;
519 break;
520
522 constr = ctx->reference_error_constr;
523 break;
524
526 constr = ctx->regexp_error_constr;
527 break;
528
531 constr = ctx->uri_error_constr;
532 break;
533 }
534 }
535
536 hres = create_error(ctx, constr, ei->error, ei->message ? ei->message : jsstr_empty(), &r);
537 return SUCCEEDED(hres) ? r : NULL;
538}
#define msg(x)
Definition: auth_time.c:54
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
#define ARRAY_SIZE(A)
Definition: main.h:20
#define FIXME(fmt,...)
Definition: precomp.h:53
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_NOTIMPL
Definition: ddrawi.h:99
#define E_FAIL
Definition: ddrawi.h:102
#define free
Definition: debug_ros.c:5
#define NULL
Definition: types.h:112
#define lstrlenW
Definition: compat.h:750
static HRESULT RangeErrorConstr_value(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: error.c:279
static jsstr_t * format_error_message(HRESULT error, const WCHAR *arg)
Definition: error.c:364
static HRESULT TypeErrorConstr_value(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: error.c:307
static HRESULT Error_toString(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: error.c:36
void handle_dispatch_exception(script_ctx_t *ctx, EXCEPINFO *ei)
Definition: error.c:409
static HRESULT error_constr(script_ctx_t *ctx, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r, jsdisp_t *constr)
Definition: error.c:213
static HRESULT alloc_error(script_ctx_t *ctx, jsdisp_t *prototype, jsdisp_t *constr, jsdisp_t **ret)
Definition: error.c:157
static HRESULT EvalErrorConstr_value(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: error.c:272
static HRESULT create_error(script_ctx_t *ctx, jsdisp_t *constr, UINT number, jsstr_t *msg, jsdisp_t **ret)
Definition: error.c:181
void set_error_location(jsexcept_t *ei, bytecode_t *code, unsigned loc, unsigned source_id, jsstr_t *line)
Definition: error.c:426
jsdisp_t * create_builtin_error(script_ctx_t *ctx)
Definition: error.c:448
static HRESULT SyntaxErrorConstr_value(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: error.c:300
static const builtin_info_t Error_info
Definition: error.c:145
static HRESULT ReferenceErrorConstr_value(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: error.c:286
static HRESULT RegExpErrorConstr_value(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: error.c:293
HRESULT init_error_constr(script_ctx_t *ctx, jsdisp_t *object_prototype)
Definition: error.c:321
static HRESULT URIErrorConstr_value(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: error.c:314
HRESULT throw_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str)
Definition: error.c:398
static const builtin_prop_t Error_props[]
Definition: error.c:141
static HRESULT ErrorConstr_value(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: error.c:265
static HRESULT Error_value(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
Definition: error.c:125
static const builtin_info_t ErrorInst_info
Definition: error.c:152
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:809
MonoAssembly int argc
Definition: metahost.c:107
#define assert(_expr)
Definition: assert.h:32
#define isnan(x)
Definition: math.h:360
#define NAN
Definition: math.h:273
static wchar_t * wmemchr(const wchar_t *s, wchar_t c, size_t n)
Definition: wchar.h:48
return ret
Definition: mutex.c:146
#define L(x)
Definition: resources.c:13
void reset_ei(jsexcept_t *)
Definition: jscript.c:314
static bytecode_t * bytecode_addref(bytecode_t *code)
Definition: engine.h:221
unsigned short WORD
Definition: ntddk_ex.h:93
const GLdouble * v
Definition: gl.h:2040
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
GLdouble n
Definition: glext.h:7729
GLuint res
Definition: glext.h:9613
GLuint GLuint * names
Definition: glext.h:11545
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
GLbitfield flags
Definition: glext.h:7161
GLfloat GLfloat p
Definition: glext.h:8902
GLuint GLuint num
Definition: glext.h:9618
GLenum GLsizei len
Definition: glext.h:6722
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
static HRESULT to_string(VARIANT *src, BSTR *dst)
Definition: host.c:46
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
HRESULT jsdisp_define_data_property(jsdisp_t *obj, const WCHAR *name, unsigned flags, jsval_t value)
Definition: dispex.c:3349
HRESULT init_dispex_from_constr(jsdisp_t *dispex, script_ctx_t *ctx, const builtin_info_t *builtin_info, jsdisp_t *constr)
Definition: dispex.c:2512
ULONG jsdisp_release(jsdisp_t *obj)
Definition: dispex.c:1911
HRESULT init_dispex(jsdisp_t *dispex, script_ctx_t *ctx, const builtin_info_t *builtin_info, jsdisp_t *prototype)
Definition: dispex.c:2454
HRESULT jsdisp_propget_name(jsdisp_t *obj, const WCHAR *name, jsval_t *val)
Definition: dispex.c:2946
jsdisp_t * to_jsdisp(IDispatch *disp)
Definition: dispex.c:2447
#define JS_E_DISABLED_CC
Definition: jscript.h:550
#define JS_E_MISSING_ARG
Definition: jscript.h:534
#define JS_E_INVALID_CHAR
Definition: jscript.h:542
#define JS_E_OBJECT_NOT_COLLECTION
Definition: jscript.h:535
#define JS_E_EXPECTED_CCEND
Definition: jscript.h:549
#define JS_E_ENUMERATOR_EXPECTED
Definition: jscript.h:562
#define JS_E_SYNTAX
Definition: jscript.h:536
#define JS_E_ILLEGAL_ASSIGN
Definition: jscript.h:556
#define JS_E_BOOLEAN_EXPECTED
Definition: jscript.h:558
#define JS_E_JSCRIPT_EXPECTED
Definition: jscript.h:561
#define JS_E_EXPECTED_IDENTIFIER
Definition: jscript.h:540
#define JS_E_PRECISION_OUT_OF_RANGE
Definition: jscript.h:570
#define JS_E_OBJECT_REQUIRED
Definition: jscript.h:530
#define JS_E_OBJECT_EXPECTED
Definition: jscript.h:555
#define JS_E_MISSING_RBRACKET
Definition: jscript.h:539
#define JS_E_CANNOT_CREATE_FOR_NONEXTENSIBLE
Definition: jscript.h:574
#define JS_E_SUBSCRIPT_OUT_OF_RANGE
Definition: jscript.h:528
#define JS_E_INVALID_BREAK
Definition: jscript.h:545
#define JS_E_MISPLACED_RETURN
Definition: jscript.h:544
#define JS_E_LABEL_REDEFINED
Definition: jscript.h:547
#define JS_E_ARRAYBUFFER_EXPECTED
Definition: jscript.h:584
#define JS_E_DATAVIEW_INVALID_OFFSET
Definition: jscript.h:581
#define JS_E_LABEL_NOT_FOUND
Definition: jscript.h:548
#define JS_E_INVALID_CONTINUE
Definition: jscript.h:546
#define JS_E_UNTERMINATED_STRING
Definition: jscript.h:543
#define JS_E_DATAVIEW_NO_ARGUMENT
Definition: jscript.h:579
#define JS_E_CYCLIC_PROTO_VALUE
Definition: jscript.h:573
#define JS_E_EXPECTED_ASSIGN
Definition: jscript.h:541
#define SCRIPTLANGUAGEVERSION_ES5
Definition: jscript.h:53
#define JS_E_FUNCTION_EXPECTED
Definition: jscript.h:552
#define JS_E_NOT_DATAVIEW
Definition: jscript.h:578
#define JS_E_INVALID_URI_CHAR
Definition: jscript.h:568
HINSTANCE jscript_hinstance
Definition: jscript_main.c:40
#define JS_E_INVALID_WRITABLE_PROP_DESC
Definition: jscript.h:586
#define JS_E_INVALID_URI_CODING
Definition: jscript.h:567
HRESULT(* builtin_invoke_t)(script_ctx_t *, jsval_t, WORD, unsigned, jsval_t *, jsval_t *)
Definition: jscript.h:129
#define JS_E_MISSING_SEMICOLON
Definition: jscript.h:537
#define JS_E_KEY_NOT_OBJECT
Definition: jscript.h:583
#define JS_E_DATAVIEW_INVALID_ACCESS
Definition: jscript.h:580
#define JS_E_NONWRITABLE_MODIFIED
Definition: jscript.h:577
#define JS_E_VBARRAY_EXPECTED
Definition: jscript.h:559
#define JS_E_ARRAY_EXPECTED
Definition: jscript.h:572
#define JS_E_UNDEFINED_VARIABLE
Definition: jscript.h:557
#define JS_E_MISSING_LBRACKET
Definition: jscript.h:538
#define JS_E_NUMBER_EXPECTED
Definition: jscript.h:554
static BOOL is_jscript_error(HRESULT hres)
Definition: jscript.h:588
HRESULT to_number(script_ctx_t *, jsval_t, double *)
Definition: jsutils.c:630
@ JSCLASS_ERROR
Definition: jscript.h:108
#define JS_E_REGEXP_SYNTAX
Definition: jscript.h:564
#define JS_E_NONCONFIGURABLE_REDEFINED
Definition: jscript.h:576
#define JS_E_INVALID_PROPERTY
Definition: jscript.h:532
#define JS_E_UNEXPECTED_QUANTIFIER
Definition: jscript.h:565
#define JS_E_INVALID_DELETE
Definition: jscript.h:560
#define JS_E_WRONG_THIS
Definition: jscript.h:582
#define JS_E_TO_PRIMITIVE
Definition: jscript.h:526
#define JS_E_DATE_EXPECTED
Definition: jscript.h:553
#define JS_E_INVALIDARG
Definition: jscript.h:527
#define JS_E_REGEXP_EXPECTED
Definition: jscript.h:563
#define JS_E_INVALID_ACTION
Definition: jscript.h:533
#define JS_E_EXPECTED_AT
Definition: jscript.h:551
#define JS_E_PROP_DESC_MISMATCH
Definition: jscript.h:585
#define JS_E_FRACTION_DIGITS_OUT_OF_RANGE
Definition: jscript.h:569
#define JS_E_INVALID_LENGTH
Definition: jscript.h:571
#define JS_E_OBJECT_NONEXTENSIBLE
Definition: jscript.h:575
const unsigned int PROPF_WRITABLE
Definition: jsdisp.idl:37
const unsigned int PROPF_ENUMERABLE
Definition: jsdisp.idl:36
const unsigned int PROPF_CONFIGURABLE
Definition: jsdisp.idl:38
const unsigned int PROPF_METHOD
Definition: jsdisp.idl:33
const unsigned int PROPF_CONSTR
Definition: jsdisp.idl:34
jsstr_t * jsstr_alloc_len(const WCHAR *buf, unsigned len)
Definition: jsstr.c:86
jsstr_t * jsstr_empty(void)
Definition: jsstr.c:291
jsstr_t * jsstr_alloc_buf(unsigned len, WCHAR **buf)
Definition: jsstr.c:69
static jsstr_t * jsstr_addref(jsstr_t *str)
Definition: jsstr.h:113
static void jsstr_release(jsstr_t *str)
Definition: jsstr.h:107
static unsigned jsstr_length(jsstr_t *str)
Definition: jsstr.h:55
static unsigned jsstr_flush(jsstr_t *str, WCHAR *buf)
Definition: jsstr.h:145
static jsstr_t * jsstr_alloc(const WCHAR *str)
Definition: jsstr.h:100
void jsval_release(jsval_t val)
Definition: jsutils.c:186
static jsval_t jsval_string(jsstr_t *str)
Definition: jsval.h:109
static jsval_t jsval_obj(jsdisp_t *obj)
Definition: jsval.h:125
static BOOL is_undefined(jsval_t v)
Definition: jsval.h:180
static IDispatch * get_object(jsval_t v)
Definition: jsval.h:228
static BOOL is_object_instance(jsval_t v)
Definition: jsval.h:175
static jsval_t jsval_number(double n)
Definition: jsval.h:153
#define debugstr_w
Definition: kernel32.h:32
#define error(str)
Definition: mkdosfs.c:1605
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
static PVOID ptr
Definition: dispmode.c:27
static unsigned int number
Definition: dsound.c:1479
HRESULT hres
Definition: protocol.c:465
#define argv
Definition: mplay32.c:18
unsigned int UINT
Definition: ndis.h:50
UINT WINAPI SysStringLen(BSTR str)
Definition: oleaut.c:196
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:271
short WCHAR
Definition: pedump.c:58
#define err(...)
#define calloc
Definition: rosglue.h:14
const WCHAR * str
#define LoadStringW
Definition: utils.h:64
#define TRACE(s)
Definition: solgame.cpp:4
static int source_id
Definition: solundo.cpp:15
unsigned loc
Definition: engine.h:264
bytecode_t * code
Definition: engine.h:263
jsstr_t * message
Definition: engine.h:260
jsstr_t * line
Definition: engine.h:261
HRESULT error
Definition: engine.h:254
jsstr_t * source
Definition: engine.h:259
Definition: jsstr.h:36
Definition: jsval.h:54
jsclass_t class
Definition: jscript.h:183
Definition: inflate.c:139
Definition: parser.c:49
Definition: name.c:39
int32_t INT
Definition: typedefs.h:58
#define DISP_E_EXCEPTION
Definition: winerror.h:3621
#define HRESULT_CODE(hr)
Definition: winerror.h:188