As pointed by Coverity, in some case of texture with image that needs to
be scaled the temporary scaled image would be leaked if and error occured
during its conversion.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
As pointed by Coverity, the function is creating a temporary array with
the list of keys of the Style dictionnary, but it was not freed in the end.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
As pointed by Coverity, the string passed to 'findPositionInMenu' is not
freed, and as the function does not modify it it is not necessary to
allocate a new storage for the argument.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
As pointed by Coverity, there are a few cases where the list of the keys
of a dictionary is being requested, but at the end the array that was
created to hold these keys was not freed.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
As pointed by Coverity, the indentation for a block of code could lead to
misinterpretation on when it is executed. To make code safer, re-indented
the code properly and added some blank lines for clarity.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
As pointed by Coverity, it is not useful to call RReleaseImage if we are in
the branch of code where we know that the image for which it is being
called is NULL.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
As pointed by Coverity, the code was making an explicit use of a null
pointer, which is certainly not what was initially expected. The code was
simplified to fix the case and to make it easier to understand and
maintain.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
When defining enums as types instead of simple enums allows to use these
types at the places where the corresponding enum values are expected, then
allowing the compiler to check that, potentially reporting incorrect use
of values to the user.
This patch adds the type for the gradient style for RRender*Gradient.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
When defining enums as types instead of simple enums allows to use these
types at the places where the corresponding enum values are expected, then
allowing the compiler to check that, potentially reporting incorrect use
of values to the user.
This patch adds the types for the drawing operations used by the functions
who drawing shapes into an RImage.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
When defining enums as types instead of simple enums allows to use these
types at the places where the corresponding enum values are expected, then
allowing the compiler to check that, potentially reporting incorrect use
of values to the user.
This patch adds types for the configuration fields in the RContextAttributes
structure.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
Using local function prototype redefinition is dangerous, now a single
prototype is seen in all the files that are concerned.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
To be consistent with RCreateXImage and because it should not be up to the
caller to handle this, when XGetImage returns a NULL pointer then the
function RGetXImage will also return NULL instead of an RXImage structure
with a NULL pointer.
This consistent behaviour helps fixing a memory leak in WMaker reported by
Coverity (#50125).
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
As pointed by Coverity, this value is never used, the assignation has no
effect, so Coverity reports that it is unnecessary complexity that is not
compatible with code maintainability.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
As pointed by Coverity, there's a free on the content of this buffer at
function's end, but if the image's width or height is lower than 1 then we
could reach this free before allocating anything, thus having an
uninitialised pointer.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
As pointed by Coverity, environment variables cannot be considered
trustworthy ("tainted"), so we need to make sure the values provided are
within reasonable bounds for safe operations.
Seized the opportunity to try to provide clearer name for the constants
defining the default value.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
As pointed by Coverity, the behaviour of fopen/fread/fclose in case of
error is not really what the macro RETRY assumes. So the macro is removed
and appropriate action is implemented.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
As pointed by Coverity, the shift operation performed for color-to-pixel
transform may not behave as well as expected because of the types used
(Coverity pointing suspicious sign extension because of int type being
involved).
The new code tries to leave no open interpretation to the compiler.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
As pointed by Coverity, the shift operation performed for color-to-pixel
transform may not behave as well as expected because of the types used
(Coverity pointing suspicious sign extension because of int type being
involved).
The new code tries to leave no open interpretation to the compiler.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
This patch adds the ability to set the colors for IconTitleColor, IconTitleBack,
ClipTitleColor, and CClipTitleColor, the only four colors set by setstyle which
previously were not configurable using WPrefs.
The icon in the preview window appears as a miniwindow if IconTitleColor or
IconTitleBack are being configured and as the clip if ClipTitleColor or
CClipTitleColor are being configured.
Based on libexif feature, this patch is adding orientation
detection and provides 2 more shortcuts for live
right/left rotation. Internal version was bumped to 0.7.
Having the warning displayed will help devs to understand what is going
on and where to look at for a fix.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
As pointed by Coverity, the allocated value returned by XGetModifierMapping
is assumed to be non-NULL everywhere except when releasing it.
Removed this last check (useless) and added a little check at the beginning
to avoid an (improbable) crash.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
As pointed by Coverity, the functions WMCreatePLString return a newly
allocated WMPropList, which must be released when not needed anymore.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
As reported by Coverity, the return string of WMGetTextFieldText is
malloced so it needs to be freed.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
As pointed by Coverity, the string returned by 'WMGetTextFieldText' is
allocated dynamically, so it must be freed when not needed anymore.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
As pointed by Coverity, the function 'WMGetTextFieldText' already allocates
memory for its return string, so it is not necessary to wstrdup it.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
As pointed by Coverity, if there is a problem when reading the binary data
of an RImage from a file, the area allocated to store it would not be
freed.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
As pointed by Coverity, the PLArray that is created to store the return
value of the function 'processData' can be left allocated if some case
handling decide to return NULL instead.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
As pointed by Coverity, there is a possible NULL pointer dereference in the
code that extracts the selected modifier (from a popup button list).
The code assumes that there is always a space between the core name of the
modifier (which is used for saving) and the more user friendly name. This
is true if the list could be successfully generated in fillModifierPopUp,
but it may not be the case if that function has to fall-back to the
default list (XGetModifierMaping failure).
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
As pointed by Coverity, it is possible to dereference the NULL pointer in
the function 'browseForFile'.
This should have been reported by the compiler ("possible use of
uninitialised variable") but the assignation of a default value to the
variable 'lPtr' hides this, but as the default value is not a good one then
the code could crash.
This patch removes the default value, so we may have some info from the
compiler and handles the case smoothly.
It also fixes a potential memory leak pointed also by Coverity in the
case where the string returned by WMGetFilePanelFileName would be a 0
length non-null string.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
As pointed by Coverity, the return value of 'sscanf' is not checked, which
may not be a problem because the fall-back value for 'i' is provided before.
However, if sscanf fails there is no guarantee that all implementation would
leave 'i' untouched in case of parsing error, and for convenience it is more
logical to write the code is such a way that the value assignment looks like
the fall-back value it is.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
cppcheck is reporting the msg below:
[../WINGs/winputmethod.c:215] -> [../WINGs/winputmethod.c:209]:
(style) Found duplicate branches for 'if' and 'else'.
The patch is fixing it by setting a default return call.
With a set of images i was able to detect that
the flip functions was shifting the image by 1px.
The 90 and 270 degrees rotation were not working as
the functions were also mirroring the img.
The patch is also fixing the C style based on checkpatch.
when the rotation angle value passed to RRotateImage is a modulo of 90,
the function is working well but in other cases the rotateImage()
function is called. That last function is half implemented but
the half already implemented part is also segfaulting (use the testrot.c
to replay the crash).
So the patch is moving the 'not implemented' msg to disable the whole
rotateImage() function and comment it out.
As pointed by Coverity, the function GetCommandForPid did use a macro
'RETRY' for the 'close' of file descriptor, which is not correct because
on success the function 'close' does not reset errno, and in case of
failure the file descriptor is not more valid anyway.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
Factually, the program works because the function 'drawerRemoveFromChain'
uses only the address of the drawer and not the content of the structure,
but conceptually this address point to a storage space that has been
de-allocated, so that's calling for trouble for future code changes.
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>
As pointed by Coverity, the function 'wdefaultspathfordomain' cannot
return a NULL path, so it is not necessary to check for it. (in the
present case, it led Coverity to think it was possible to have the
structure 'stbuf' uninitialised)
Signed-off-by: Christophe CURIS <christophe.curis@free.fr>