From e24a6c194b46a74ceb462bea19aa045a2e690bc4 Mon Sep 17 00:00:00 2001 From: stevenj Date: Sat, 12 Jun 2010 00:34:14 -0400 Subject: [PATCH] bug fix - python strides are in bytes, not in doubles (thanks to Zhichao for the bug report) darcs-hash:20100612043414-c8de0-be0b85376f235b5e48551c6c917ad687ec41eaeb.gz --- swig/nlopt-python.i | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/swig/nlopt-python.i b/swig/nlopt-python.i index 05570f1..8a2e88e 100644 --- a/swig/nlopt-python.i +++ b/swig/nlopt-python.i @@ -34,7 +34,8 @@ $1 = &arrayv; { double *arr_data = (double *) array_data(array); - int arr_i, arr_s = array_stride(array,0), arr_sz = array_size(array,0); + int arr_i, arr_s = array_stride(array,0) / sizeof(double); + int arr_sz = array_size(array,0); for (arr_i = 0; arr_i < arr_sz; ++arr_i) arrayv[arr_i] = arr_data[arr_i * arr_s]; } @@ -64,7 +65,7 @@ static void *dup_pyfunc(void *p) { Py_INCREF((PyObject*) p); return p; } static double func_python(unsigned n, const double *x, double *grad, void *f) { - npy_intp sz = npy_intp(n), sz0 = 0, stride1 = 1; + npy_intp sz = npy_intp(n), sz0 = 0, stride1 = sizeof(double); PyObject *xpy = PyArray_New(&PyArray_Type, 1, &sz, NPY_DOUBLE, &stride1, const_cast(x), // not NPY_WRITEABLE 0, NPY_C_CONTIGUOUS | NPY_ALIGNED, NULL); -- 2.30.2