[sane-devel] [PATCH] backend/hp.c: Remove tautological if condition to remove build warning

Paul Menzel paulepanter at users.sourceforge.net
Fri Feb 15 13:18:33 UTC 2013


Date: Fri, 15 Feb 2013 14:02:42 +0100

Building SANE default configuration with Clang 3.2 the following warning
is generated.

        $ clang --version
        Debian clang version 3.2-1~exp5 (tags/RELEASE_32/final) (based on LLVM 3.2)
        Target: i386-pc-linux-gnu
        Thread model: posix
        $ CC=clang ./configure
        $ make
        […]
        /bin/sh ../libtool --silent  --tag=CC   --mode=compile clang -DHAVE_CONFIG_H -I. -I../include/sane -I/usr/local/include -I. -I. -I../include -I../include -DLIBDIR="/usr/local/lib/sane" -DBACKEND_NAME=hp -DPATH_SANE_CONFIG_DIR=/usr/local/etc/sane.d 	  -DPATH_SANE_DATA_DIR=/usr/local/share 	  -DPATH_SANE_LOCK_DIR=/usr/local/var/lock/sane 	  -DV_MAJOR=1 -DV_MINOR=0  -g -O2 -W -Wall -Wcast-align -Wcast-qual -Wmissing-declarations -Wmissing-prototypes -Wpointer-arith -Wreturn-type -Wstrict-prototypes -pedantic -ansi -MT libhp_la-hp.lo -MD -MP -MF .deps/libhp_la-hp.Tpo -c -o libhp_la-hp.lo `test -f 'hp.c' || echo './'`hp.c
        hp.c:590:7: warning: variable 'new' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
          if (!ptr)
              ^~~~
        hp.c:601:59: note: uninitialized use occurs here
          RETURN_IF_FAIL( hp_device_list_add(&global.device_list, new) );
                                                                  ^~~
        ./hp.h:83:25: note: expanded from macro 'RETURN_IF_FAIL'
          SANE_Status status = (try);                                           \
                                ^
        hp.c:590:3: note: remove the 'if' if its condition is always true
          if (!ptr)
          ^~~~~~~~~
        hp.c:563:15: note: initialize the variable 'new' to silence this warning
          HpDevice      new;
                           ^
                            = NULL
        1 warning generated.

And indeed the `if` condition is always true as the `for` loop only
exists if `ptr` is `NULL`.

The proposal to silence the warning by setting `new` to NULL is not used
as then a NULL device would be added to the device list in
`RETURN_IF_FAIL( hp_device_list_add(&global.device_list, new) );`.
---
 backend/hp.c |    9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/backend/hp.c b/backend/hp.c
index c85e40c..5810254 100644
--- a/backend/hp.c
+++ b/backend/hp.c
@@ -587,13 +587,10 @@ hp_get_dev (const char *devname, HpDevice* devp)
   DBG(3, "hp_get_dev: New device %s, connect-%s, scsi-request=%lu\n",
       devname, connect, (unsigned long)info->config.use_scsi_request);
 
-  if (!ptr)
-  {
-     status =  sanei_hp_device_new (&new, devname);
+  status = sanei_hp_device_new (&new, devname);
 
-     if ( status != SANE_STATUS_GOOD )
-       return status;
-  }
+  if ( status != SANE_STATUS_GOOD )
+     return status;
 
   if (devp)
       *devp = new;
-- 
1.7.10.4
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
URL: <http://lists.alioth.debian.org/pipermail/sane-devel/attachments/20130215/c7337985/attachment.pgp>


More information about the sane-devel mailing list