X-Git-Url: http://git.hcoop.net/bpt/guile.git/blobdiff_plain/a41bed83ab2d2f0bf93c06115c695280d04d13e6..e0c211bb2e80605b4ae3fb121c34136f6e266b70:/libguile/procprop.c?ds=sidebyside diff --git a/libguile/procprop.c b/libguile/procprop.c index 56bd3896b..ff4648d00 100644 --- a/libguile/procprop.c +++ b/libguile/procprop.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995,1996,1998,2000,2001,2003,2004, 2006, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +/* Copyright (C) 1995,1996,1998,2000,2001,2003,2004, 2006, 2008, 2009, 2010, 2011, 2012 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 @@ -72,7 +72,15 @@ scm_i_procedure_arity (SCM proc, int *req, int *opt, int *rest) { if (!SCM_SMOB_APPLICABLE_P (proc)) return 0; - proc = scm_i_smob_apply_trampoline (proc); + if (!scm_i_program_arity (SCM_SMOB_DESCRIPTOR (proc).apply_trampoline, + req, opt, rest)) + return 0; + + /* The trampoline gets the smob too, which users don't + see. */ + *req -= 1; + + return 1; } else return 0;