Hi, please see a comment inline,
Hello, (sorry, my English is not so good ;) I often write the following codes. ---------------------------------------------------------------- void main () { var home = Environment.get_home_dir (); print ("%s\n", home); } ---------------------------------------------------------------- Then, unnecessary g_strdup is generated. ---------------------------------------------------------------- void _vala_main (void) { const gchar* _tmp0_ = NULL; gchar* _tmp1_; gchar* home; _tmp0_ = g_get_home_dir (); _tmp1_ = g_strdup (_tmp0_); home = _tmp1_; g_print ("%s\n", home); _g_free0 (home); } ---------------------------------------------------------------- It is necessary to write a tedious following codes to avoid it. ---------------------------------------------------------------- void main () { unowned string home = Environment.get_home_dir (); print ("%s\n", home); } ----------------------------------------------------------------
If get_home_dir() returns unowned string, and you make assignment to owned string reference, you get a copy of this string. Each owned reference of a string will delete the string when it goes out of scope, that's why this strdup is needed (note: most objects don't behave that way). Please see that the value returned by g_get_home_dir(), _tmp0_, is not freed in the C code. best regards,
Is not unnecessary g_strdup generated without writing a tedious code? After that, if the following codes are written, it becomes a compile error. (Vala 0.11.2) ---------------------------------------------------------------- void main () { const string home = Environment.get_home_dir (); print ("%s\n", home); } ---------------------------------------------------------------- /home/kentaro/work/VALA/unnecessary_strdup.vala.c: In function '_vala_main': /home/kentaro/work/VALA/unnecessary_strdup.vala.c:18: error: invalid initializer error: cc exited with status 256 Compilation failed: 1 error(s), 0 warning(s) Best regards, -- Kentaro NAKAZAWA (from Japan) _______________________________________________ vala-list mailing list vala-list gnome org http://mail.gnome.org/mailman/listinfo/vala-list
-- Mój klucz publiczny o identyfikatorze 1024D/E12C5A4C znajduje się na serwerze hkp://keys.gnupg.net My public key with signature 1024D/E12C5A4C is on the server hkp://keys.gnupg.net
Attachment:
signature.asc
Description: PGP signature