From bug-octave-request at bevo dot che dot wisc dot edu Thu Sep 11 22:32:23 1997 Subject: Bug in builtin function: filter From: Erik de Castro Lopo To: bug-octave at bevo dot che dot wisc dot edu Date: Fri, 12 Sep 1997 13:35:01 +1000 -------- Bug report for Octave 2.0.9 configured for i586-pc-linux-gnu Description: ----------- Built in function filter was not returning the second output argument if only given three input arguments. Repeat-By: --------- command: [a b] = filter ([0 1 0], 1, 1:10) returns: a = 0 1 2 3 4 5 6 7 8 9 b = [] should return: a = 0 1 2 3 4 5 6 7 8 9 b = 10 0 Fix: --- Here's a fix. The following diff was produced by: cd /usr/local/SRC/octave-2.0.9/src diff filter.cc.original filter.cc ---------------------------------------------------------------------------------------------- 29a30,32 > // > // Fixed bug. Was not returning the second output argument if only given 3 input > // arguments. Erik de Castro Lopo (erikd at zip dot com dot au) Fri Sept. 12, 12:54:42 1997. 151c154 < DEFUN_DLD (filter, args, , --- > DEFUN_DLD (filter, args, nargout, 197c200 < if (nargin == 3) --- > if (nargin == 3 && nargout < 2) 208c211,215 < ComplexColumnVector si = args(3).complex_vector_value (); --- > ComplexColumnVector si ; > if (nargin == 4) > si = args(3).complex_vector_value (); > else > si.resize (b.length () > a.length() ? b.length () - 1 : a.length () - 1, 0.0); 214,217c221,225 < if (si_is_vector) < retval (1) = octave_value (si, (args(3).columns () == 1)); < else < retval (1) = si; --- > if (nargout == 2) > if (si_is_vector) > retval (1) = octave_value (si, (args(3).columns () == 1)); > else > retval (1) = si; 239c247 < if (nargin == 3) --- > if (nargin == 3 && nargout < 2) 250c258,263 < ColumnVector si = args(3).vector_value (); --- > ColumnVector si ; > if (nargin == 4) > si = args(3).vector_value (); > else > si.resize (b.length () > a.length() ? b.length () - 1 : a.length () - 1, 0.0); > 256,259c269,273 < if (si_is_vector) < retval (1) = octave_value (si, (args(3).columns () == 1)); < else < retval (1) = si; --- > if (nargout == 2) > if (si_is_vector) > retval (1) = octave_value (si, (args(3).columns () == 1)); > else > retval (1) = si; ---------------------------------------------------------------------------------------------- Configuration (please do not edit this section): ----------------------------------------------- uname output: Linux hendrix 2.0.30 #14 Sat May 3 13:49:28 EST 1997 i586 configure opts: Fortran compiler: g77 FFLAGS: -O F2C: F2CFLAGS: FLIBS: -lf2c -lm -L/usr/lib/gcc-lib/i486-linux/2.7.2 -L/usr/i486-linux/lib -lm -lgcc -lc CPPFLAGS: INCFLAGS: -I/usr/local/include -I/usr/local/include/octave-2.0.9 C compiler: gcc, version 2.7.2 CFLAGS: -DHAVE_CONFIG_H -mieee-fp -g -O2 -Wall CPICFLAG: -fPIC C++ compiler: c++, version 2.7.2 CXXFLAGS: -DHAVE_CONFIG_H -fno-implicit-templates -mieee-fp -g -O2 -Wall CXXPICFLAG: -fPIC LDFLAGS: -g LIBFLAGS: -L/usr/local/lib RLD_FLAG: -Xlinker -rpath -Xlinker /usr/local/lib CXXLIBS: -lstdc++ -lm -L/usr/lib/gcc-lib/i486-linux/2.7.2 -L/usr/i486-linux/lib -lstdc++ -lm -lgcc -lc -lgcc TERMLIBS: -lncurses LIBS: LEXLIB: LIBPLPLOT: LIBDLFCN: DEFS: -DOCTAVE_SOURCE=1 -DSEPCHAR=':' -DSEPCHAR_STR=":" -DUSE_GNU_INFO=1 -DUSE_READLINE=1 -DF77_APPEND_UNDERSCORE=1 -DSIZEOF_SHORT=2 -DSIZEOF_INT=4 -DSIZEOF_LONG=4 -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1 -DSTDC_HEADERS=1 -DHAVE_DIRENT_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_ASSERT_H=1 -DHAVE_CURSES_H=1 -DHAVE_FCNTL_H=1 -DHAVE_FLOAT_H=1 -DHAVE_GRP_H=1 -DHAVE_LIMITS_H=1 -DHAVE_MEMORY_H=1 -DHAVE_NAN_H=1 -DHAVE_PWD_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_TIMES_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_UTSNAME_H=1 -DHAVE_TERMCAP_H=1 -DHAVE_TERMIO_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_VARARGS_H=1 -DHAVE_ATEXIT=1 -DHAVE_BCOPY=1 -DHAVE_BZERO=1 -DHAVE_DUP2=1 -DHAVE_ENDGRENT=1 -DHAVE_ENDPWENT=1 -DHAVE_EXECVP=1 -DHAVE_FCNTL=1 -DHAVE_FORK=1 -DHAVE_GETCWD=1 -DHAVE_GETEGID=1 -DHAVE_GETEUID=1 -DHAVE_GETGID=1 -DHAVE_GETGRENT=1 -DHAVE_GETGRGID=1 -DHAVE_GETGRNAM=1 -DHAVE_GETHOSTNAME=1 -DHAVE_GETPGRP=1 -DHAVE_GETPID=1 -DHAVE_GETPPID=1 -DHAVE_GETPWENT=1 -DHAVE_GETPWNAM=1 -DHAVE_GETPWUID=1 -DHAVE_GETUID=1 -DHAVE_GETWD=1 -DHAVE_LSTAT=1 -DHAVE_MEMMOVE=1 -DHAVE_MKDIR=1 -DHAVE_MKFIFO=1 -DHAVE_ON_EXIT=1 -DHAVE_PIPE=1 -DHAVE_PUTENV=1 -DHAVE_RENAME=1 -DHAVE_RINDEX=1 -DHAVE_RMDIR=1 -DHAVE_SETGRENT=1 -DHAVE_SETPWENT=1 -DHAVE_SETVBUF=1 -DHAVE_SIGACTION=1 -DHAVE_SIGPENDING=1 -DHAVE_SIGPROCMASK=1 -DHAVE_SIGSUSPEND=1 -DHAVE_STAT=1 -DHAVE_STRCASECMP=1 -DHAVE_STRDUP=1 -DHAVE_STRERROR=1 -DHAVE_STRNCASECMP=1 -DHAVE_TEMPNAM=1 -DHAVE_UMASK=1 -DHAVE_UNLINK=1 -DHAVE_USLEEP=1 -DHAVE_VFPRINTF=1 -DHAVE_VSPRINTF=1 -DHAVE_WAITPID=1 -DHAVE_PROGRAM_INVOCATION_NAME=1 -DHAVE_LIBDL=1 -DHAVE_DLOPEN=1 -DHAVE_DLSYM=1 -DHAVE_DLERROR=1 -DHAVE_DLCLOSE=1 -DWITH_DL=1 -DWITH_DYNAMIC_LINKING=1 -DHAVE_LIBM=1 -DHAVE_FINITE=1 -DHAVE_ISNAN=1 -DHAVE_ISINF=1 -DHAVE_ACOSH=1 -DHAVE_ASINH=1 -DHAVE_ATANH=1 -DHAVE_ERF=1 -DHAVE_ERFC=1 -DHAVE_ST_BLKSIZE=1 -DHAVE_ST_BLOCKS=1 -DHAVE_ST_RDEV=1 -DHAVE_TZNAME=1 -DHAVE_GR_PASSWD=1 -DRETSIGTYPE=void -DSYS_SIGLIST_DECLARED=1 -DHAVE_SYS_SIGLIST=1 -DHAVE_POSIX_SIGNALS=1 -DHAVE_GETRUSAGE=1 -DHAVE_TIMES=1 -- +--------------------------------------------------+ Erik de Castro Lopo home : erikd at zip dot com dot au work : e dot de dot castro at fairlightesp dot com dot au +--------------------------------------------------+