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
>[email protected]
>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

_______________________________________________
vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to