1 : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 : * vim: set ts=8 sw=4 et tw=99:
3 : */
4 :
5 : #include "tests.h"
6 :
7 : static int g_counter;
8 :
9 : static JSBool
10 1 : CounterAdd(JSContext *cx, JSObject *obj, jsid id, jsval *vp)
11 : {
12 1 : g_counter++;
13 1 : return JS_TRUE;
14 : }
15 :
16 : static JSClass CounterClass = {
17 : "Counter", /* name */
18 : 0, /* flags */
19 : CounterAdd, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub,
20 : JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, JS_FinalizeStub,
21 : JSCLASS_NO_OPTIONAL_MEMBERS
22 : };
23 :
24 4 : BEGIN_TEST(testPropCache_bug505798)
25 : {
26 1 : g_counter = 0;
27 1 : EXEC("var x = {};");
28 1 : CHECK(JS_DefineObject(cx, global, "y", &CounterClass, NULL, JSPROP_ENUMERATE));
29 1 : EXEC("var arr = [x, y];\n"
30 : "for (var i = 0; i < arr.length; i++)\n"
31 : " arr[i].p = 1;\n");
32 1 : CHECK_EQUAL(g_counter, 1);
33 1 : return true;
34 : }
35 2 : END_TEST(testPropCache_bug505798)
|