Simon TRENY wrote:
> On Wed, 16 Aug 2006 21:06:28 +0100,
> Essien Ita Essien <[EMAIL PROTECTED]> wrote :
> 
> 
>>Kim Woelders wrote:
>>
>>>Enlightenment CVS wrote:
>>>  
>>>
>>>>Enlightenment CVS committal
>>>>
>>>>Author  : essiene
>>>>Project : e17
>>>>Module  : proto
>>>>
>>>>Dir     : e17/proto/entrance_edit_gui/src/widgets
>>>>
>>>>
>>>>Modified Files:
>>>>    ew_entry.c ew_entry.h 
>>>>
>>>>
>>>>Log Message:
>>>>- Fix return type warning when getting an etk_entry, it returns a
>>>>const char*, but we use normal char*'s everywhere.
>>>>
>>>>===================================================================
>>>>RCS
>>>>file: /cvs/e/e17/proto/entrance_edit_gui/src/widgets/ew_entry.c,v
>>>>retrieving revision 1.7 retrieving revision 1.8
>>>>diff -u -3 -r1.7 -r1.8
>>>>--- ew_entry.c      16 Aug 2006 12:52:01 -0000      1.7
>>>>+++ ew_entry.c      16 Aug 2006 13:13:30 -0000      1.8
>>>>@@ -47,10 +47,10 @@
>>>>    return ew;
>>>> }
>>>> 
>>>>-const char*
>>>>+char*
>>>> ew_entry_get(Entrance_Entry ew)
>>>> {
>>>>-   return etk_entry_text_get(ETK_ENTRY(ew->control));
>>>>+   return (char*) etk_entry_text_get(ETK_ENTRY(ew->control));
>>>> }
>>>> 
>>>>    
>>>
>>>...
>>>
>>>You should never (have to) cast away the const modifier. It is
>>>there for a purpose. It tells you (and the compiler) that here is a
>>>pointer to a piece of memory that you are not supposed to modify.
>>>
>>>The compiler warns you if you pass a const pointer to a function
>>>that takes non-const pointer arguments, that you may be changing
>>>something you are not supposed to change.
>>>The compiler can also use the const modifier to make certain
>>>assumptions used for optimization, e.g. that the content of an
>>>object is unchanged across calling a function which takes a const
>>>pointer to the object.
>>>
>>>If you seem to have to cast away a const pointer to avoid compiler 
>>>warnings it is most likely because something is wrong somewhere.
>>>  
>>
>>thnx for bringing that up.
>>
>>the full scenario is etk_entry_text_get() returns a const char*.
>>
>>ecore_config_string_set, takes a char*,
>>
>>i have to pass the value returned from etk_entry_text_get() to 
>>ecore_config_string_set(), if i use one variable, there will be
>>warnings anyhow i do it:
>>
>>/*warning by ecore_config_string_set*/
>>const char * try1 etk_entry_text_get(...);
>>ecore_config_string_set(key, try1);
>>
>>/*warning by etk_entry_text_get*/
>>char* try2 etk_entry_text_get(...);
>>ecore_config_string_set(key, try2);
>>
>>that's why i did that. anyways... what's the best way to do this? or 
>>just ignore it? its a trivial warning *i tink*
> 
> 
> etk_entry_text_get() returns a "const char *" because it returns the
> string used internally by the entry. So you should not by any means
> modify it. Now, if you need to modify it, you should probably work on a
> copy (created with strdup() or whathever).
> But, in your case, I don't think ecore_config_string_set() modifies the
> given string, so the better fix would probably be to change the API of
> ecore_config to make it use a "const char *" instead of a "char *".
> 
I did assume this was the reason and I changed the ecore_config function 
API before sending my first rant :)

/Kim

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to