Please test the SVN branch

Stefan van der Walt stefan at
Thu Oct 12 05:21:49 CDT 2006

On Thu, Oct 12, 2006 at 12:38:51AM -0600, Travis Oliphant wrote:
> I made some fixes to the "asbuffer" code which let me feel better about 
> exposing it in NumPy (where it is now named int_asbuffer).
> This code takes a Python integer and a size and returns a buffer object 
> that points to that memory.  A little test is performed by trying to 
> read (and possibly write if a writeable buffer is requested) to the 
> first and last elements of the buffer.  Any segfault is trapped and used 
> to raise a Python error indicating you can't use that area of memory. 
> It doesn't guarantee you won't shoot yourself, but it does make it more 
> difficult to segfault Python.  Previously a simple int_asbuffer(3423423, 
> 5) would have segfaulted (unless by chance you the memory area 3423423 
> happens to be owned by Python).

Some argument checking and a docstring would be helpful.  I guessed
wrong the first time:

In [1]: x = N.array([1,2,3])

In [4]: y = N.int_asbuffer(x.size,x.__array_interface__['data'][0])

In [5]: y[0]

Segmentation fault

Out of curiosity, why does the following outputs differ:

In [39]: y = N.int_asbuffer(0L,x.size)
exceptions.SystemError                               Traceback (most recent call last)

/home/stefan/<ipython console> 

SystemError: error return without exception set

In [40]: y = N.int_asbuffer(1L,x.size)
exceptions.ValueError                                Traceback (most recent call last)

/home/stefan/<ipython console> 

ValueError: cannot use memory location as a buffer.

Thanks for your work on this.


Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo

More information about the Numpy-discussion mailing list