From cf9a806dbd8fc58caafefbb4a5328fac2d322cee Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Thu, 7 Jan 2010 16:40:13 +0100 Subject: [PATCH] fix array->list MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * libguile/generalized-arrays.c (array_to_list): Fix buggy implementation. Thanks to Daniel Llorens del Río for the bug repor. --- THANKS | 1 + libguile/generalized-arrays.c | 11 +++++------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/THANKS b/THANKS index 9ffb0f041..94b86a102 100644 --- a/THANKS +++ b/THANKS @@ -70,6 +70,7 @@ For fixes or providing information which led to a fix: Matt Kraai Daniel Kraft Miroslav Lichvar + Daniel Llorens del Río Jeff Long Marco Maggi Gregory Marton diff --git a/libguile/generalized-arrays.c b/libguile/generalized-arrays.c index 8bbbed4d1..ea5388d83 100644 --- a/libguile/generalized-arrays.c +++ b/libguile/generalized-arrays.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995,1996,1997,1998,2000,2001,2002,2003,2004, 2005, 2006, 2009 Free Software Foundation, Inc. +/* Copyright (C) 1995,1996,1997,1998,2000,2001,2002,2003,2004, 2005, 2006, 2009, 2010 Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -243,14 +243,13 @@ array_to_list (scm_t_array_handle *h, size_t dim, unsigned long pos) { SCM res = SCM_EOL; long inc; - size_t i, lbnd; + size_t i; - i = h->dims[dim].ubnd; - lbnd = h->dims[dim].lbnd; + i = h->dims[dim].ubnd - h->dims[dim].lbnd + 1; inc = h->dims[dim].inc; - pos += (i - h->dims[dim].ubnd) * inc; + pos += (i - 1) * inc; - for (; i >= lbnd; i--, pos -= inc) + for (; i > 0; i--, pos -= inc) res = scm_cons (array_to_list (h, dim + 1, pos), res); return res; }