Hi,
bin grad auf ein merkwürdiges Phänomen gestoßen. Ich versuche derzeit 
einen DLNA-Client, den es bisher nur als Gtk+ Programm gibt als Console 
umzustricken zwecks späterer Verwendung auf einem Beagle Bone Black.
In diesem code
1  | static void
  | 
2  | append_media_server (GUPnPDeviceProxy *proxy)
  | 
3  | {
 | 
4  |         GUPnPDeviceInfo   *info;
  | 
5  |         GUPnPServiceProxy *content_dir;
  | 
6  |         char              *friendly_name;
  | 
7  | 
  | 
8  | 
  | 
9  |         info = GUPNP_DEVICE_INFO (proxy);
  | 
10  | 
  | 
11  |         content_dir = get_content_dir (proxy);
  | 
12  |         friendly_name = gupnp_device_info_get_friendly_name (info);
  | 
13  | 
  | 
14  |         if ( (friendly_name != NULL) && (content_dir != NULL)) {
 | 
15  |                 GList      *child;
  | 
16  | 
  | 
17  |                 g_list_append(MediaServers,proxy);
  | 
18  | 
  | 
19  |                 g_free (friendly_name);
  | 
20  | 
  | 
21  |                 /* Append the embedded devices */
  | 
22  |                 child = gupnp_device_info_list_devices (info);
  | 
23  |                 while (child) {
 | 
24  |                         append_media_server(GUPNP_DEVICE_PROXY (child->data));
  | 
25  | 
  | 
26  |                         g_object_unref (child->data);
  | 
27  |                         child = g_list_delete_link (child, child);
  | 
28  |                 }
  | 
habe ich etwas sehr merkwürdiges beobachtet. Lasse ich die 
Optimierungseinstellungen der Compiler auf -o2, bekomme ich für 
"friendly_name" keine vernünftigen Werte (Überprüft im Debugger). 
Schalte ich die Optimierung aus, bekomme ich lesbare Namen.
Füge ich bei eingeschalteter Optimierung die Zeile
1  |         cout << friendly_name << endl;
  | 
hinter gupnp_device_info_get_friendly_name ein, bekomme ich auch 
ordentliche Werte. Kann mir einer erklären warum? Auch ohne die Ausgabe 
wird friendly_name ja in der if Abrage benutzt, sollte daher ja auch 
nicht wegoptimiert werden.