Author: mattip <[email protected]>
Branch: 
Changeset: r78663:c2af38ee8b4f
Date: 2015-07-25 20:11 +0300
http://bitbucket.org/pypy/pypy/changeset/c2af38ee8b4f/

Log:    fix for 32 bit

diff --git a/pypy/module/micronumpy/descriptor.py 
b/pypy/module/micronumpy/descriptor.py
--- a/pypy/module/micronumpy/descriptor.py
+++ b/pypy/module/micronumpy/descriptor.py
@@ -9,7 +9,7 @@
 from rpython.rlib import jit
 from rpython.rlib.objectmodel import (
         specialize, compute_hash, we_are_translated, enforceargs)
-from rpython.rlib.rarithmetic import r_longlong, r_ulonglong
+from rpython.rlib.rarithmetic import r_longlong, r_ulonglong, ovfcheck
 from pypy.module.micronumpy import types, boxes, support, constants as NPY
 from .base import W_NDimArray
 from pypy.module.micronumpy.appbridge import get_appbridge_cache
@@ -975,8 +975,12 @@
     if shape is not None:
         subdtype = make_new_dtype(space, w_subtype, w_dtype, alignment, copy, 
w_metadata=w_metadata)
         assert isinstance(subdtype, W_Dtype)
-        size = support.product(shape)
-        size *= subdtype.elsize
+        try:
+            size = support.product(shape)
+            size = ovfcheck(size * subdtype.elsize)
+        except OverflowError:
+            raise oefmt(space.w_ValueError, "invalid shape in fixed-type 
tuple: "
+                  "dtype size in bytes must fit into a C int.")
         if size > 0x7fffffff:
             raise oefmt(space.w_ValueError, "invalid shape in fixed-type 
tuple: "
                   "dtype size in bytes must fit into a C int.")
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to