[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [E-devel] E CVS: proto essiene



Simon TRENY wrote:
On Wed, 16 Aug 2006 21:06:28 +0100,
Essien Ita Essien <essien@wazobialinux.com> 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).
i didn't want to have to strdup and then free for something i'm just passing around actually.
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 *".
yup. i think that would be more elegant. but uhhh... who'll bell the cat ;)

maybe i'll just strdup for now... its not like the strdup call will kill the system anyways :)

Anyhoo... who *own* ecore (i.e. who do i have to bug with that recommendation? :) ).


Regards
Simon TRENY <MoOm>


/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