Commit Graph
100 Commits
Author SHA1 Message Date
Christophe CURIS 5a65dbeb3d WPrefs: Cleaned dangerous function prototype usage
- remove extern declaration in source file, use header instead

- add inclusion of header defining the functions of the file to
get the compiler to cross-check them

- marked static the functions that should not be visible ouside
their file
2013-05-12 01:01:20 +01:00
Christophe CURIS 549cefc47b util: Added a few missing 'static' attributes for functions 2013-05-12 01:01:20 +01:00
Christophe CURIS d517d5cac0 wmaker: Cleaned dangerous function prototype usage
- remove extern declaration in source file, use header instead

- add inclusion of header defining the functions of the file to
get the compiler to cross-check them

- marked static the functions that should not be visible ouside
their file
2013-05-12 01:01:20 +01:00
Christophe CURIS 4b89104aca WINGs: Added a few missing 'static' attributes to functions
Some functions are not meant to be visible by user; the use of the
attribute avoid risk of name clash with user functions at link
time.
2013-05-12 01:01:20 +01:00
Christophe CURIS 140249ad0c WINGs: Added include for header defining the funcion provided by the file
This allows the compiler to warn if the definition in the file is
no in line with what is exposed to the users of the function through
the header definition.
2013-05-12 01:01:20 +01:00
Christophe CURIS 8a58c8b568 WINGs: Moved declaration of extern variable to the global header
Having local extern declaration is dangerous because the compiler
is not able to cross-check if the type of the variable was defined
consistently.
2013-05-12 01:01:20 +01:00
Christophe CURIS 5c2a1ae1a1 WINGs: Place prototype of functions in WINGsP.h instead of local definition
It is a bad idea to declare the prototype of an external function
in a file as it won't allow the compiler to cross-check it.
2013-05-12 01:01:20 +01:00
Christophe CURIS 367d1f938d WINGs: Reorganised the private header
The declarations have been split by source file, adding the usual
separation mark. Removed these 2 prototypes:
 - W_SetFocusOfToplevel: case typo, the correct prototype already existed
in the file;
 - W_TextWidth: function is not defined anywhere
2013-05-12 01:01:20 +01:00
Christophe CURIS e2d816c7a2 WINGs: Removed cast to change function prototype
When a function is used as a call-back, it is dangerous to have
arguments with a type different than what is expected by the
call-back definition.

This patch sets the argument list to match what is expected by
the call-back prototype and inserts an explicit type conversion
at the beginning of the function.
2013-05-12 01:01:20 +01:00
Christophe CURIS bab90b2168 WINGs: Added explicit parameter list to function prototypes (Complex case)
It is dangerous to let the compiler know about a function without
letting him know the arguments because he won't be able to report
invalid calls.

This patch concern the cases where adding the arguments led to
problems because the functions were used as call-back. As it is
dangerous to have parameter mismatchs in call-back, setup the
args as expected by prototype and added explicit conversion inside
the concerned function, so the compiler will know and be able to
do what may be necessary.
2013-05-12 01:01:20 +01:00
Christophe CURIS 708bc27e3f WINGs: Added explicit parameter list to function prototypes (Simple cases)
It is dangerous to let the compiler know about a function without
letting him know the arguments because he won't be able to report
invalid calls.

This patch concern the cases where adding the arguments did not
need other code change.
2013-05-12 01:01:20 +01:00
Christophe CURIS a622197faa Added explicit 'void' to function that takes no argument
This is the correct way to tell that a function takes no
arguments, because an empty parameter list tells the compiler
that it is not yet defined, and is tolerated only for
compatibility with very old C compilers for whom prototypes
were not yet a defined language element.
2013-05-12 01:01:20 +01:00
Christophe CURIS a3281b1e89 src/main.c: Moved local prototype for global function to header 'funcs.h'
It is a bad idea to declare the prototype of an external function
in a file as it won't allow the compiler to cross-check it.
2013-05-12 01:01:19 +01:00
Christophe CURIS 017e6a84a0 wmaker: Reorganised the header 'funcs.h'
The functions are now grouped by source file (groups in alphabetic
order) with the traditional separation mark. This makes the file
easier to work with.
2013-05-12 01:01:19 +01:00
Christophe CURIS d01c2a596f wmaker: Removed deprecated function definition from header
These function exists nowhere, so they should not have a prototype
in the header.
2013-05-12 01:01:19 +01:00
Christophe CURIS b5101fc8ae WPrefs: Added 'const' attribute to function parameters 2013-05-12 01:01:19 +01:00
Christophe CURIS eb14bca73b WPrefs: Moved content of 'double.h' into 'WPrefs.h'
It is not a good idea to multiply the number of header files,
specially in this case where 'double.h' defined so few things
(and lacked the usual copyright notice / include guards).
2013-05-12 01:01:19 +01:00
Christophe CURIS 5d03c455fc util: Added 'const' attribute to function parameters 2013-05-12 01:01:19 +01:00
Christophe CURIS d44aa97243 util: Created header to define functions that may be used in more that one place
Using local function prototype redefinition is dangerous, now the
prototype is seen in all concerned files.
2013-05-12 01:01:19 +01:00
Christophe CURIS f2824647f3 Configure: Added some -Wxxx checks when debug mode is enabled
We probably don't want our users to have to endure them, so they
are enabled only when Debug is activated, because they tend to
help keeping the code safe.
2013-05-11 00:17:27 +01:00
Christophe CURIS 1da498ff3b wmaker: Removed equality comparison on floating point number
The equality comparison (a == b) is known to be a dangerous trap
when floating-point arithmetics are involved. In the current case
the offending operation can be done with integers directly.
2013-05-11 00:17:27 +01:00
Christophe CURIS 0e41122680 WINGs: Changed equality comparison on floating point number
The equality comparison (a == b) is known to be a dangerous trap
when floating-point arithmetics are involved. This patch changes
all the cases which try to do this to a safer check.
2013-05-11 00:17:27 +01:00
Christophe CURIS dcfd7a4b5e WINGs: Changed the minimum internal knob size of WScroller
The original code allowed to have 0.0, but this can generate
division by zero in WScrollView. As a value of 0.0 is not realistic
anyway, use a minimum constant instead.
2013-05-11 00:17:27 +01:00
Christophe CURIS 8ef38e9910 WRaster: Changed equality/inequality comparison on floating point number
The equality comparison (a == b) is known to be a dangerous trap
when floating-point arithmetics are involved. This patch changes
all the cases which try to do this to a safer check.
2013-05-11 00:17:27 +01:00
Christophe CURIS 80a59696e5 Fixed improper variables definition in header file
Some header were creating variable, this is a bad practice which
is likely to not behave as expected. This creates one distinct
variable in each object file that used the header, and:

 - on well behaved compiler, this ends up in a link error (see
commit 39fdb451ba for an example)

 - on bad behaving compiler, this can be linked as multiple local
variable, thus having strange effects when running program

 - on insouciant compiler (who said gcc?) the variables are
silently merged, hiding portability issues
2013-05-11 00:17:27 +01:00
Christophe CURIS 8238e4681a WPrefs: Move declaration of function into the common header
It is a bad idea to declare the prototype of an external function
in a file as it won't allow the compiler to cross-check it.
2013-05-11 00:17:27 +01:00
Christophe CURIS 90d24a1648 Unified usage of the 'inline' attribute for functions
Autoconf provides the necessary stuff to detect if inline keyword
is supported, and to detect special syntaxes, so let's use this
and remove the multiple local definitions, this makes code simpler.
2013-05-11 00:17:27 +01:00
Christophe CURIS 7f6699ffca Changed formula for getting the number of elements in a static array
When using the formula [sizeof(array) / sizeof( x )] to get the number
of element in a static array, it is better to use array[0] for 'x'
instead of the base type of array:
 - in case the base type would change someday;
 - if the compiler were deciding to insert padding somewhere
2013-05-11 00:17:27 +01:00
Christophe CURIS e17a197bc4 Configure: Fixed usage of CPPFLAGS instead of CFLAGS for some options
Some compilation options are actually targetting the preprocessor
instead of the compiler; using the wrong variable can have some
subtile side effects, so let's get things right.
2013-05-11 00:17:27 +01:00
Christophe CURIS f73ccae798 Removed temporary allocation to build a path that is actually a constant
This allocation was certainly participating to memory fragmentation.
2013-05-11 00:17:27 +01:00
Christophe CURIS 7c320447fb Added missing include guards in a few headers
Considering the number of headers we have, it is a good idea to
avoid possible problems. For details, you may read:
  http://en.wikipedia.org/wiki/Include_guard

All headers should be ok now.
2013-05-10 19:37:47 +01:00
Christophe CURIS 7c98f7cfc4 Added proper legal notice at beginning of header files
Some header were missing the notice; used git blame to find the
original date and author (without guarantee.
2013-05-10 19:37:47 +01:00
Christophe CURIS fc262124cd WPrefs: Added a few comments in header file
Nothing really interresting, just separators to group definitions
by theme, using the same syntax that can be found in other headers.
2013-05-10 19:37:47 +01:00
Christophe CURIS 664ab79add Changed WM_OSDEP to use Conditional instead of Substitution
The automake documentation states that using substitution inside the
list of SOURCES will not work and calls for not doing it. The use
of 'EXTRA_xxx' made things look like they worked but is probably not
enough for corner cases.

This patches switches to the conditional method which will be safe.
2013-05-10 19:37:47 +01:00
Christophe CURIS 7e424bf232 Configure: Changed OS dependant check to use Autoconf's macro
The macro provided by Autoconf will generate a similar code but
with better portability, and the source file is more consistent.
2013-05-10 19:37:47 +01:00
Christophe CURIS e7c2a3dc69 util: removed deprecated file 'directjpeg.c'
The content is not used anywhere, and this is probably mostly due
to the fact that the behaviour is provided by the WRaster library
in a better way.
2013-05-10 19:37:47 +01:00
Christophe CURIS c15da2e406 Readme: Removed reference to 'contrib' directory
This directory have been removed long time ago (in 2010 by Tamas
TEVESZ, in commit c960ae622e) so we
should not document it.
2013-05-10 19:37:47 +01:00
Christophe CURIS 35f2b667db Readme: Removed reference to the tutorial
This page does not exist anymore, and may have been outdated anyway
as it appears to be like 10 years old contribution.
2013-05-10 19:37:47 +01:00
Christophe CURIS f29fba2c83 InfoPanel: Added display of memory fragmentation information
This information is displayed only when debug mode was enabled to
avoid confusing users.
2013-05-10 15:48:33 +01:00
Christophe CURIS c253c5a7c7 InfoPanel: Use a more user-friendly separator to display supported image formats 2013-05-10 15:48:33 +01:00
Christophe CURIS 441145cfc0 InfoPanel: Minor fixes for what must be translated and what does not need to 2013-05-10 15:48:33 +01:00
Christophe CURIS 1a8316d4c9 WINGs: Updated NEWS file about the API changes in the libraries 2013-05-09 18:08:36 +01:00
Christophe CURIS 52b8aabccc WINGs: Fixed incorrect return type for internal function
The function did return a boolean actually as would be expectable
from such function, but its prototype did not use the proper type.
2013-05-09 18:08:12 +01:00
Christophe CURIS 05a3eadd65 WINGs: Fixed incorrect allocation size, missing room for '\0' 2013-05-09 18:08:12 +01:00
Christophe CURIS a4395c5764 WPrefs.app: Added const attribute to local string
Now that the WINGs functions are const-correct, it is possible to
set the attribute on the strings to help the compiler.
2013-05-09 16:56:28 +01:00
Christophe CURIS 591dc5cd4d wrlib: Added 'const' attribute to local function in 'context' 2013-05-09 16:56:28 +01:00
Christophe CURIS fb3d9e65a6 WINGs: Added 'static' attribute to local functions in wcolorpanel
These 4 functions are local to the file so we make this official.
2013-05-09 16:56:28 +01:00
Christophe CURIS 28e6bde782 WINGs: Added 'const' attribute to 'WMCreatePropListFromDescription'
To be able to do this in a clean way, it was necessary to add the
attribute also in PLData's ptr field, which is actually right
because none of the function changes its content.

The function that fills it from a file/pipe however needed small
changes to respect the const-ness of the field.
2013-05-09 16:56:28 +01:00
Christophe CURIS 75a0beffeb WINGs: Added 'const' attribute to functions in dragdestination, wtext
This makes both the API and local function const-correct on their
input parameters.
2013-05-09 16:56:28 +01:00
Christophe CURIS 72108875aa WINGs: Added 'const' attribute to functions in wpanel, wpopupbutton, wtabview
This makes both the API and local function const-correct on their
input parameters.
2013-05-09 16:56:28 +01:00
Christophe CURIS 6616323088 WINGs: Added 'const' attribute to functions in wballoon, wmenuitem, wmisc, wtextfield
This makes both the API and local function const-correct on their
input parameters.
2013-05-09 16:56:28 +01:00
Christophe CURIS a1119f8dd3 WINGs: Added 'const' attribute to functions in wbrowser, wcolorpanel, wfilepanel and wfontpanel
This makes both the API and local function const-correct on their
input parameters.
2013-05-09 16:56:28 +01:00
Christophe CURIS c89e8df33f WINGs: Added 'const' attribute to functions in wbutton, wframe, wlabel, wlist, wwindow
This makes both the API and local function const-correct on their
input parameters.
2013-05-09 16:56:28 +01:00
Christophe CURIS e7c8ac76ea WINGs: Added 'const' attribute to functions in wapplication, wappresource, wcolor, wfont, wpixmap
This makes both the API and local function const-correct on their
input parameters.
2013-05-09 16:56:28 +01:00
Christophe CURIS af403073f0 Fixed memory leak due to non-freed property list structure
The history is actually loaded from a file into a property list that
is then converted to an array. The intermediate property list was
not freed, which led to memory leak.

It looks like it was a tentative of optimisation to avoid duplicating
an already allocated string and re-use the pointer instead, but this
means it is not possible to free the original container as it would
free the string too.

There is a better way to do this, but it requires an API change on the
WUtil library so it is left for a future improvment.
2013-05-08 15:05:00 +01:00
Christophe CURIS 5a5216ffb9 Changed method to limit the number of History entries loaded
The previous code limited the number of entries that were read into
the history array, but the user is expecting a maximum on the
number of entries displayed. This can make a little difference in
two cases:
 - if there are duplicate entries (dups are checked for and removed)
 - if some entries are not strings (unlikely, but not impossible)

The new code just stops adding history entries when the user
specified count is reached.
2013-05-08 15:05:00 +01:00
Christophe CURIS bcee010082 Added a few 'const' to filename parameters for History functions
Name of file is, as usual, a read-only parameter.
2013-05-08 15:05:00 +01:00
Christophe CURIS ea19294b70 Fixed memory leak due to non-freed temporary PropList
When menus are read in the PropList format, they are loaded into a
temporary PropList object, which is parsed into the internal menu
structure, and the PropList object is no more used. There were two
cases where this temp object was not freed.
2013-05-08 15:05:00 +01:00
Christophe CURIS 0004d38ef8 WPrefs: Added const attribute to statically stored strings
Now that the function handling the configuration dictionnary are
const correct, the key stored in static array can be given the const
attribute.
2013-05-08 15:05:00 +01:00
Christophe CURIS 8517f3dcef WPrefs: Added the proper 'const' attribute to the dictionnary functions
A common argument to all these functions is the name of the key to
operate on, and this name is never modified by the functions. Marking
it as const reflects this, and can allow compiler to generate better
results thanks to this info.
2013-05-08 15:05:00 +01:00
Christophe CURIS 9ab6368b33 WUtil: Increased version number for the library
The addition of the const attributes is actually an API change, so
we have to reflect this for the next official release.

Because the change on 'wusergnusteppath' may impact users of the API,
we won't only change REVISION like it was done for WRaster lib.
2013-05-04 16:25:44 +01:00
Christophe CURIS 033e3eaa54 WUtil: Rewrote 'wusergnusteppath' to be more efficient
The first optimisation is to compute only once the path, and then
always re-use the value which did not change anyway.
The second optimisation is to avoid a lot of excessive function
calls, including alloc+free that are not necessary and participate
in memory fragmentation.
2013-05-04 16:25:44 +01:00
Christophe CURIS a18fd7cd69 Fixed const correctness in functions using 'wusergnusteppath'
The change introduced in previous commit for const correctness has
a small impact on WindowMaker's code, this patch fixes all the new
warnings.
2013-05-04 16:25:44 +01:00
Christophe CURIS cd1c55d63c WUtil: Changed declaration of 'wusergnusteppath' to return a CONST string
According to the way its value is being used everywhere, that is
what would be expected, so let's make it official.

Please note that this may introduce warnings on user code using
this function ("...discard const...") but that's an opportunity
for them to check that their code is not doing anything wrong.
2013-05-04 16:25:44 +01:00
Christophe CURIS fd02f5f083 WUtil: Fixed risky code for de-escaping of strings
The internal function 'unescapestr' is used to transform strings which
may contain escape sequences (\x) into their plain representation.

There are a few cases where the function can misbehave (typically parse
after the end of string, thus writing past the end of the reserved
result area) which can be a source of problem later. The new code
should be safer.
2013-05-04 16:25:44 +01:00
Christophe CURIS f386e34d29 WUtil: Fixed wrong type recast
The previous syntax used an explicit cast to remove the CONST
attribute, but the right way is to keep the attribute and store
the result in a variable which is defined properly.
2013-05-04 16:25:44 +01:00
Christophe CURIS 32ecd4ee58 WUtil: Avoid unnecessary strdup + free
It is not good for memory fragmentation to duplicate a string and
then free the original; changed code to only keep originaly allocated
string.
2013-05-04 16:25:44 +01:00
Christophe CURIS 98e3c7e347 WUtil: Added comment about values returned by API functions
This is mainly to be consistent with what's done in the rest of
the file, but it is better to have it there that nowhere at all
anyway...
2013-05-04 16:25:44 +01:00
Christophe CURIS 74c17bffae WUtil: Added 'const' attribute to all remaining functions where applicable
This makes the WUtil API as much const-correct as possible for
the arguments being given to its functions.

This does not make it totally correct as it does not changes the
const-ness on returned values because the goal of this patch is
to make no visible change to existing program that would use this
library.
2013-05-04 16:16:19 +01:00
Christophe CURIS d40fa69b92 WUtil: Added 'const' attribute to the filename on WM(Read|Write)PropList*
Note that the argument is also stored as-is in the PLData structure
but only for debugging purpose (warning display to user), hence the
choice to not duplicate it. As a side effect, it was 'const'-ified
too to reflect that.
2013-05-04 16:16:18 +01:00
Christophe CURIS ea9d3e643f WUtil: Added 'const' attribute to parameters for file related API
As a side note, in 'wfindfileinlist' the first argument should be:
  const char * const *path_list

However, due to limited support for const in plain C, that would
introduce warnings in user code. For compatibility issues, this
was not implemented.
2013-05-04 16:16:18 +01:00
Christophe CURIS bbf84eb0e8 WUtil: Added 'const' attribute on non-modified arguments to functions
A number of functions do not actually modify the strings given as
parameter, but only read or duplicate it. In this case it is a good
practice to mark that parameter as pointer-to-const to let the
compiler known about it, to be able to perform appropriate
optimisations.
2013-05-04 16:16:18 +01:00
Christophe CURIS ac89706859 WRaster: Bugfix, added missing 'const' to RLoad* functions
Prototype of function changed in commit
  d1e1c13fa3
but two of them were not updated in the source.

Thanks to Rodolfo García Peñas for taking the time to test and report.
2013-05-03 08:17:26 +01:00
Christophe CURIS 602fbc9ee4 Added missing headers to the list of source files of the project
This is needed in order to have all the expected files in the
archive of sources when using:
  make dist
2013-05-03 07:16:10 +01:00
Christophe CURIS 9a895dcda5 Increased library's revision to reflect API updates
The addition of 'const' to parameters of library's functions is an
API change, although this will break neither the binary interface
nor the compilation of program using the library; the other changes
also have no impact on the compiled library object.
2013-05-02 20:48:45 +01:00
Christophe CURIS 9e4253f670 Added the last missing 'const' attributes to function parameters 2013-05-02 20:48:45 +01:00
Christophe CURIS 0bf6297a32 Added 'const' attribute on non-modified arguments for color handling functions
These functions have both an input and an output color, marked the
input color as const to help distinguish.
2013-05-02 20:48:45 +01:00
Christophe CURIS 8f7d4b7751 Added 'const' attribute on non-modified arguments for drawing functions
All these functions expects agruments like color or list-of-points
that should not be modified (and are not) by the function; added
the corresponding qualifier to reflect that.
2013-05-02 20:48:45 +01:00
Christophe CURIS d1e1c13fa3 Added 'const' attribute to the file name parameter to load/save
This name is not modified by the callee functions (and it should
not be anyway), so let's make it official in the internal functions
2013-05-02 20:48:45 +01:00
Christophe CURIS 225c99a6ca Converted #define into an Enum for image format number
An enum is always a better idea as it allows the compiler to do
some checks, and as this info is internal only to the WRLib it
will not change the API.
2013-05-02 20:48:45 +01:00
Christophe CURIS 268ead4eca Moved the function to Save image also into the internal header 2013-05-02 20:48:45 +01:00
Christophe CURIS 883cda48e3 Moved declaration of format-specific image Load functions to dedicated header
The functions are declared in different files but they were called
in another file which re-declared the prototypes. This is dangerous
as it can lead to misaligned prototypes when functions changes.

They are now grouped in the library internal header 'imgformat.h'
2013-05-02 20:48:45 +01:00
Christophe CURIS cacc04d4a2 Move the list of keyboard shortcut texts into the array of their config keyword
The config-file-keyword was defined in an array, but the user displayed
string was defined at another place, thus requiring special care when
modifying the list, to keep the same number of entries, in the same
order, ...

This was an open call for subtle bugs, so the keyword and user string
are now at a single place, making updates on the list easier and the
GUI generation code smaller.
2013-05-02 20:48:10 +01:00
Christophe CURIS 46c8d6d2bf configure: Add detection of library kvm that is used under OpenBSD
As proposed by Christian Schulte, when compiling WindowMaker on BSD
it uses the kvm library to gather information on processes (in the
os-dependant file), so we must properly link against the corresponding
library, which this patch adds.
2013-04-09 09:03:58 +01:00
Christophe CURIS 8b6e96ab74 Moved parameters of WPrefs's expert check-buttons to a single place
The list of options in the Expert tab of WPrefs.app was filled using
hard-coded list of commands with static indexes and the related
usage were spread accross procedures. This was dangerous because
it could lead to mismatched indexes, the list length being also
variable, so it was hard to update.

This patch proposes to group all the options in a single place (a
static const array), so it is easy to add/remove/reorder the options,
and the code just parses this array based on its auto-calculated
size.
2012-11-18 17:23:20 +01:00
Christophe CURIS 27d55b3e33 Added option to 'configure' to control debug information for compilation
As reported by Amadeusz Sławiński, there were a number of debug-only
information printed by the menu parser, which had no reason to be
in a user package.

This patch removes all the hard-coded DEBUG definitions pointed
by Amadeusz and adds a new (standard-like) option '--enable-debug'
to the configure script, which activates debug stuff for the devs.
The default behaviour is now to not have them.
As a side effect, the option also disable optimisation, which are
generally annoying when trying to run a debugger.
2012-11-16 08:06:19 +00:00
Christophe CURIS 806784e194 Fixed wrong count to release temporary memory
As found by Rodolfo, it looks like there could be memory leak in the
function 'RSmoothScaleImage' because it reserveda given number of
memory blocs but used another count to free them after use.

This patch uses the same count for release as it seems this variable
is not modified in between. Took the opportunity as Rodolfo proposed
to convert a global variable to a local variable - this global
definition seems incorrect.
2012-11-15 12:38:25 +00:00
Christophe CURIS 5a3cab3cef Changed handling of quoted strings in the menu parser for consistency
As reported by Amadeusz Sławiński, the support for (d)quoted string
in the menu file was not exactly the same as in previous versions
of WindowMaker, so we had a regression which is not acceptable.

This patch propose a consistent handling for (d)quoted text instead
of the previous on-the-title-only code; now all (d)quoted strings
are still kept as-is (as expected) but the (d)quotes are always
removed.
As a side note, it also improve the support for \escaped character
to work correctly as mentioned in the example of the default menu.

Note: This reverts b2e7620868 which
was an incomplete solution to the problem.
2012-11-15 12:37:16 +00:00
Christophe CURIS 7746fe7c5a Added reset of pointer after memory free to avoid double-free crash
As reported by Rodolfo, there are some cases when working with icons
where a crash can occur, which is related to trying to re-release
some memory that have been already freed previously.

This patch adds a reset-to-NULL of the corresponding pointers so that
on next usage wmaker will know there's no more memory associated with
these pointers.
2012-11-14 22:39:37 +00:00
Christophe CURIS 824255b1ae Fixed incorrect attributes for XCreateWindow's attributes
The code was setting some values in the window's attribute structure
which were not being used (missing the corresponding vmask flag) and
was setting some vmask bits without setting the corresponding
value in the structure.
2012-10-10 22:47:28 +01:00
Christophe CURIS a2d2f76bd0 Fixed possible null pointer dereference
The new function 'unpaint_app_icon' checks its argument 'wapp' aginst NULL,
however it does dereference the pointer beforehand, which will end up in
a crash if the null-pointer case occurs.
2012-10-09 00:29:22 +01:00
Christophe CURIS baecab089c Fixed crash when changing icon to non-existent file
As found by Rodolfo, a crash could happen when changing an icon to
a non-existent file. From his report:

Steps To Reproduce
1. Open the Settings box, for example for WMDock. (Right click on WMDock, Settings).
2. In the "Icon Image" field, write some characters. For example "asdfasdfasd".
3. Click in "OK". You get "Could not open specified icon file: GNUstep.tiffasdfasdfasd"
4. Hit in "OK"
5. Repeat 2,3,4 some times (sometimes 1, sometimes 2, sometimes 10).

The problem came from freeing the previous icon but not updating
the pointer, so if the new file did not exist it ended up with a
fake-looking icon being used, hence possible crash.

BTS: http://www.kix.es/mantis/view.php?id=1
2012-10-09 00:12:22 +01:00
Christophe CURIS b2e7620868 Menu parser: remove d-quotes around title of entry
When a menu entry contains a space, it is necessary to enclose it
in simple or double quotes; these were not removed and so would
appear in the menu.
2012-07-19 11:23:29 +01:00
Christophe CURIS 9ad278ddf8 Menu parser: added boundary checks in the path-gen for #include file search
When generating the full path+name of file to search for a file
being #included, it was generated in a buffer that's supposedly
large enough (MAXLINE > 2*PATH_MAX). However, this limit has a few
issues (PATH_MAX seem to be able to be bigger, and worse: we can't
be sure we're given longer args).

The code was rewrote to natively include boundary checks so we're
sure we won't overflow the buffer. A few strncpy have been removed
because in this case they tend to make things harder to write.
2012-07-19 11:23:29 +01:00
Christophe CURIS ac52d4de65 Menu parser: fix possible infinite loop when loading menu file
When a #include is used, the file is searched in many places; when
the file was searched in the ':'-separated list of path it could
led to infinite loop if the list contained more than one path and
that the file was not found in the first path, the ':' separator
was not properly passed over.
2012-07-19 11:23:29 +01:00
Christophe CURIS 9f694b66b5 Fixed warning in Debian's wrapper script for wmaker
The Debian script for WindowMaker generates some warnings on startup
due to 'find' being cautious about its options, updated them to be
in line with expectations.
2012-07-19 11:23:11 +01:00
Christophe CURIS 35a2ed24ec Fixed wrong re-generation of 'config-paths.h' file
There was a slight error in the generation of this this which led
it to grow in size everytime the Makefile is regenerated.
2012-07-16 02:06:25 +02:00
Christophe CURIS bb0c1f3035 Small cleanup in Git's ignore file 2012-07-15 18:50:39 +02:00
Christophe CURIS 9e86868373 Added some comments and spaces in Git's ignore file
It helps to understand why a file is present in this file, which
in turn can help to understand where a file comes from and it makes
updates to the file easier
2012-07-15 18:50:39 +02:00
Christophe CURIS 139f912e61 Remove dependency to CPP: removed stuff related to CPP calls
Now that the built-in parser has support for all the feature of CPP
being used by WindowMaker's default menu, we can remove the stuff
related to calling CPP:
 - code for preparing and running CPP;
 - compile-time option to de-activate the call to CPP;
 - command-line option
2012-07-14 20:22:21 +02:00