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