am7xxx: make sure am7xxx_get_device_info() always returns sensible values
authorAntonio Ospite <ao2@ao2.it>
Tue, 14 Feb 2017 08:49:24 +0000 (09:49 +0100)
committerAntonio Ospite <ao2@ao2.it>
Tue, 14 Feb 2017 08:49:24 +0000 (09:49 +0100)
commit3e874361f193d7ce9dec3971fd1d4923fea1a9a5
tree3989e3a7cff640ad01aaebe3e1b27e7f7ea39e6f
parentac1a48fa044f7bd505010900344f6eb1b52d5fb7
am7xxx: make sure am7xxx_get_device_info() always returns sensible values

am7xxx_get_device_info() was not covering the case of a non-NULL output
parameter on the very first invocation, this case would not usually
happen in normal operation, but the problem was there: in that case the
output device_info structure would have contained garbage, as spotted by
the static analyzer:

.../src/am7xxx.c:1279:21: warning: The right operand of '<=' is a garbage value
            original_width <= device_info.native_width &&
                           ^  ~~~~~~~~~~~~~~~~~~~~~~~~
.../src/am7xxx.c:1288:39: warning: The right operand of '/' is a garbage value
        width_ratio =  (float)original_width / device_info.native_width;
                                             ^ ~~~~~~~~~~~~~~~~~~~~~~~~

While at it also fix the symmetric case of a NULL output parameter on
subsequent invocation: check that the output argument is non-NULL before
memcpy-ing to it.
src/am7xxx.c