Index: ceval.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Python/ceval.c,v retrieving revision 2.213 diff -c -r2.213 ceval.c *** ceval.c 2000/10/30 17:15:19 2.213 --- ceval.c 2000/11/02 15:51:54 *************** *** 1619,1627 **** break; case BUILD_MAP: ! x = PyDict_New(); ! PUSH(x); ! if (x != NULL) continue; break; case LOAD_ATTR: --- 1619,1637 ---- break; case BUILD_MAP: ! x = PyDict_New(); ! if (x != NULL) { ! for (; --oparg >= 0;) { ! v = POP(); ! w = POP(); ! if (PyDict_SetItem(x,w,v) < 0) { ! x = NULL; ! break; ! } ! } ! PUSH(x); ! continue; ! } break; case LOAD_ATTR: Index: compile.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Python/compile.c,v retrieving revision 2.142 diff -c -r2.142 compile.c *** compile.c 2000/09/26 05:46:01 2.142 --- compile.c 2000/11/02 15:51:55 *************** *** 1094,1109 **** int i; /* dictmaker: test ':' test (',' test ':' value)* [','] */ for (i = 0; i+2 < NCH(n); i += 4) { ! /* We must arrange things just right for STORE_SUBSCR. ! It wants the stack to look like (value) (dict) (key) */ ! com_addbyte(c, DUP_TOP); ! com_push(c, 1); com_node(c, CHILD(n, i+2)); /* value */ ! com_addbyte(c, ROT_TWO); ! com_node(c, CHILD(n, i)); /* key */ ! com_addbyte(c, STORE_SUBSCR); ! com_pop(c, 3); } } static void --- 1094,1107 ---- int i; /* dictmaker: test ':' test (',' test ':' value)* [','] */ for (i = 0; i+2 < NCH(n); i += 4) { ! com_node(c, CHILD(n, i)); /* key */ ! com_push(c,1); com_node(c, CHILD(n, i+2)); /* value */ ! com_push(c,1); } + com_addoparg(c,BUILD_MAP,(NCH(n)+1)/4); + com_pop(c,(NCH(n)+1)/4); + com_push(c,1); } static void *************** *** 1132,1141 **** com_listmaker(c, CHILD(n, 1)); break; case LBRACE: /* '{' [dictmaker] '}' */ ! com_addoparg(c, BUILD_MAP, 0); ! com_push(c, 1); ! if (TYPE(CHILD(n, 1)) == dictmaker) com_dictmaker(c, CHILD(n, 1)); break; case BACKQUOTE: com_node(c, CHILD(n, 1)); --- 1130,1141 ---- com_listmaker(c, CHILD(n, 1)); break; case LBRACE: /* '{' [dictmaker] '}' */ ! if (TYPE(CHILD(n, 1)) == dictmaker) { com_dictmaker(c, CHILD(n, 1)); + } else { + com_addoparg(c, BUILD_MAP, 0); + com_push(c, 1); + } break; case BACKQUOTE: com_node(c, CHILD(n, 1));