[Spice-commits] 10 commits - server/common-graphics-channel.c server/dcc-send.c server/display-channel.c server/image-encoders.c server/jpeg-encoder.c server/lz4-encoder.c server/main-channel-client.c server/main-channel.c server/memslot.c server/red-channel-capabilities.c server/red-qxl.c server/red-worker.c server/reds.c server/smartcard-channel-client.c server/sound.c server/stat-file.c server/stream.c server/zlib-encoder.c

Frediano Ziglio fziglio at kemper.freedesktop.org
Tue Sep 19 15:21:04 UTC 2017


 server/common-graphics-channel.c  |    4 +-
 server/dcc-send.c                 |    4 +-
 server/display-channel.c          |    6 +--
 server/image-encoders.c           |   20 +++++------
 server/jpeg-encoder.c             |    8 ++--
 server/lz4-encoder.c              |    4 +-
 server/main-channel-client.c      |   14 +++----
 server/main-channel.c             |    8 ++--
 server/memslot.c                  |    8 ++--
 server/red-channel-capabilities.c |   14 +++----
 server/red-qxl.c                  |    4 +-
 server/red-worker.c               |    8 ++--
 server/reds.c                     |   69 +++++++++++++++++++-------------------
 server/smartcard-channel-client.c |    4 +-
 server/sound.c                    |   16 ++++----
 server/stat-file.c                |    7 +--
 server/stream.c                   |   12 +++---
 server/zlib-encoder.c             |    6 +--
 18 files changed, 108 insertions(+), 108 deletions(-)

New commits:
commit 5ccad966712be5e5339f1fc685f609be5650be27
Author: Frediano Ziglio <fziglio at redhat.com>
Date:   Mon Sep 11 16:15:52 2017 +0100

    Use GLib memory functions for RedsMigSpice::cert_subject
    
    Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
    Acked-by: Jonathon Jongsma <jjongsma at redhat.com>

diff --git a/server/main-channel.c b/server/main-channel.c
index d1fe8bd7..eca857f6 100644
--- a/server/main-channel.c
+++ b/server/main-channel.c
@@ -139,9 +139,9 @@ static void main_channel_fill_mig_target(MainChannel *main_channel, RedsMigSpice
     spice_assert(mig_target);
     g_free(main_channel->mig_target.host);
     main_channel->mig_target.host = g_strdup(mig_target->host);
-    free(main_channel->mig_target.cert_subject);
+    g_free(main_channel->mig_target.cert_subject);
     if (mig_target->cert_subject) {
-        main_channel->mig_target.cert_subject = spice_strdup(mig_target->cert_subject);
+        main_channel->mig_target.cert_subject = g_strdup(mig_target->cert_subject);
     } else {
         main_channel->mig_target.cert_subject = NULL;
     }
diff --git a/server/reds.c b/server/reds.c
index 25388692..ddc93352 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -2963,7 +2963,7 @@ static void reds_set_one_channel_security(RedsState *reds, int id, uint32_t secu
 static void reds_mig_release(RedServerConfig *config)
 {
     if (config->mig_spice) {
-        free(config->mig_spice->cert_subject);
+        g_free(config->mig_spice->cert_subject);
         g_free(config->mig_spice->host);
         g_free(config->mig_spice);
         config->mig_spice = NULL;
@@ -4119,7 +4119,7 @@ static int reds_set_migration_dest_info(RedsState *reds,
     spice_migration->sport = secure_port;
     spice_migration->host = g_strdup(dest);
     if (cert_subject) {
-        spice_migration->cert_subject = spice_strdup(cert_subject);
+        spice_migration->cert_subject = g_strdup(cert_subject);
     }
 
     reds->config->mig_spice = spice_migration;
commit b4e05a03985370bbd002972ce6181e4983d4920b
Author: Frediano Ziglio <fziglio at redhat.com>
Date:   Mon Sep 11 16:15:51 2017 +0100

    reds: Use GLib memory functions for RedServerConfig
    
    Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
    Acked-by: Jonathon Jongsma <jjongsma at redhat.com>

diff --git a/server/reds.c b/server/reds.c
index 46280e82..25388692 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -3502,7 +3502,7 @@ SPICE_GNUC_VISIBLE SpiceServer *spice_server_new(void)
     const char *record_filename;
     RedsState *reds = g_new0(RedsState, 1);
 
-    reds->config = spice_new0(RedServerConfig, 1);
+    reds->config = g_new0(RedServerConfig, 1);
     reds->config->default_channel_security =
         SPICE_CHANNEL_SECURITY_NONE | SPICE_CHANNEL_SECURITY_SSL;
     reds->config->renderers = g_array_sized_new(FALSE, TRUE, sizeof(uint32_t), RED_RENDERER_LAST);
@@ -3716,7 +3716,7 @@ static void reds_config_free(RedServerConfig *config)
     g_free(config->spice_name);
     g_array_unref(config->renderers);
     g_array_unref(config->video_codecs);
-    free(config);
+    g_free(config);
 }
 
 SPICE_GNUC_VISIBLE void spice_server_destroy(SpiceServer *reds)
commit f6af788540e5924509257525b59693ac5c195ad5
Author: Frediano Ziglio <fziglio at redhat.com>
Date:   Mon Sep 11 16:15:50 2017 +0100

    reds: Use GLib memory functions for RedServerConfig::mig_spice
    
    Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
    Acked-by: Jonathon Jongsma <jjongsma at redhat.com>

diff --git a/server/reds.c b/server/reds.c
index d1b79b33..46280e82 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -2965,7 +2965,7 @@ static void reds_mig_release(RedServerConfig *config)
     if (config->mig_spice) {
         free(config->mig_spice->cert_subject);
         g_free(config->mig_spice->host);
-        free(config->mig_spice);
+        g_free(config->mig_spice);
         config->mig_spice = NULL;
     }
 }
@@ -4114,7 +4114,7 @@ static int reds_set_migration_dest_info(RedsState *reds,
         return FALSE;
     }
 
-    spice_migration = spice_new0(RedsMigSpice, 1);
+    spice_migration = g_new0(RedsMigSpice, 1);
     spice_migration->port = port;
     spice_migration->sport = secure_port;
     spice_migration->host = g_strdup(dest);
commit 5c4df2f6c3c32edd3d845951ce7c55c311d7f883
Author: Frediano Ziglio <fziglio at redhat.com>
Date:   Mon Sep 11 16:15:49 2017 +0100

    Use GLib memory functions for RedsMigSpice::host
    
    Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
    Acked-by: Jonathon Jongsma <jjongsma at redhat.com>

diff --git a/server/main-channel.c b/server/main-channel.c
index 9d2590aa..d1fe8bd7 100644
--- a/server/main-channel.c
+++ b/server/main-channel.c
@@ -137,8 +137,8 @@ void main_channel_push_multi_media_time(MainChannel *main_chan, uint32_t time)
 static void main_channel_fill_mig_target(MainChannel *main_channel, RedsMigSpice *mig_target)
 {
     spice_assert(mig_target);
-    free(main_channel->mig_target.host);
-    main_channel->mig_target.host = spice_strdup(mig_target->host);
+    g_free(main_channel->mig_target.host);
+    main_channel->mig_target.host = g_strdup(mig_target->host);
     free(main_channel->mig_target.cert_subject);
     if (mig_target->cert_subject) {
         main_channel->mig_target.cert_subject = spice_strdup(mig_target->cert_subject);
diff --git a/server/reds.c b/server/reds.c
index dafaf481..d1b79b33 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -2964,7 +2964,7 @@ static void reds_mig_release(RedServerConfig *config)
 {
     if (config->mig_spice) {
         free(config->mig_spice->cert_subject);
-        free(config->mig_spice->host);
+        g_free(config->mig_spice->host);
         free(config->mig_spice);
         config->mig_spice = NULL;
     }
@@ -4117,7 +4117,7 @@ static int reds_set_migration_dest_info(RedsState *reds,
     spice_migration = spice_new0(RedsMigSpice, 1);
     spice_migration->port = port;
     spice_migration->sport = secure_port;
-    spice_migration->host = spice_strdup(dest);
+    spice_migration->host = g_strdup(dest);
     if (cert_subject) {
         spice_migration->cert_subject = spice_strdup(cert_subject);
     }
commit 30205766b62ea6bd2b40e04a98f4662231efbe46
Author: Frediano Ziglio <fziglio at redhat.com>
Date:   Mon Sep 11 16:15:48 2017 +0100

    reds: Use GLib memory functions for migration data
    
    Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
    Acked-by: Jonathon Jongsma <jjongsma at redhat.com>

diff --git a/server/reds.c b/server/reds.c
index 683af96f..dafaf481 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -590,7 +590,7 @@ void reds_client_disconnect(RedsState *reds, RedClient *client)
          *  messages read from the agent */
         reds->agent_dev->priv->read_filter.result = AGENT_MSG_FILTER_DISCARD;
         reds->agent_dev->priv->read_filter.discard_all = TRUE;
-        free(reds->agent_dev->priv->mig_data);
+        g_free(reds->agent_dev->priv->mig_data);
         reds->agent_dev->priv->mig_data = NULL;
 
         reds_mig_cleanup(reds);
@@ -1085,7 +1085,7 @@ uint8_t *reds_get_agent_data_buffer(RedsState *reds, MainChannelClient *mcc, siz
          * In such case, we will receive and discard the msgs (reds_reset_vdp takes care
          * of setting dev->write_filter.result = AGENT_MSG_FILTER_DISCARD).
          */
-        return spice_malloc(size);
+        return g_malloc(size);
     }
 
     spice_assert(dev->priv->recv_from_client_buf == NULL);
@@ -1107,7 +1107,7 @@ void reds_release_agent_data_buffer(RedsState *reds, uint8_t *buf)
     RedCharDeviceVDIPort *dev = reds->agent_dev;
 
     if (!dev->priv->recv_from_client_buf) {
-        free(buf);
+        g_free(buf);
         return;
     }
 
@@ -1478,7 +1478,7 @@ bool reds_handle_migrate_data(RedsState *reds, MainChannelClient *mcc,
             /* restore agent starte when the agent gets attached */
             spice_debug("saving mig_data");
             spice_assert(agent_dev->priv->plug_generation == 0);
-            agent_dev->priv->mig_data = spice_memdup(mig_data, size);
+            agent_dev->priv->mig_data = g_memdup(mig_data, size);
         }
     } else {
         spice_debug("agent was not attached on the source host");
@@ -1665,7 +1665,7 @@ static void reds_mig_target_client_add(RedsState *reds, RedClient *client)
 
     g_return_if_fail(reds);
     spice_debug("trace");
-    mig_client = spice_new0(RedsMigTargetClient, 1);
+    mig_client = g_new0(RedsMigTargetClient, 1);
     mig_client->client = client;
     mig_client->reds = reds;
     reds->mig_target_clients = g_list_append(reds->mig_target_clients, mig_client);
@@ -1692,7 +1692,7 @@ static void reds_mig_target_client_add_pending_link(RedsMigTargetClient *client,
     RedsMigPendingLink *mig_link;
 
     spice_assert(client);
-    mig_link = spice_new0(RedsMigPendingLink, 1);
+    mig_link = g_new0(RedsMigPendingLink, 1);
     mig_link->link_msg = link_msg;
     mig_link->stream = stream;
 
@@ -1703,7 +1703,7 @@ static void reds_mig_target_client_free(RedsState *reds, RedsMigTargetClient *mi
 {
     reds->mig_target_clients = g_list_remove(reds->mig_target_clients, mig_client);
     g_list_free_full(mig_client->pending_links, g_free);
-    free(mig_client);
+    g_free(mig_client);
 }
 
 static void reds_mig_target_client_disconnect_all(RedsState *reds)
@@ -3136,7 +3136,7 @@ static RedCharDevice *attach_to_red_agent(RedsState *reds, SpiceCharDeviceInstan
             spice_debug("restoring dev from stored migration data");
             spice_assert(dev->priv->plug_generation == 1);
             reds_agent_state_restore(reds, dev->priv->mig_data);
-            free(dev->priv->mig_data);
+            g_free(dev->priv->mig_data);
             dev->priv->mig_data = NULL;
         }
         else {
@@ -4545,7 +4545,7 @@ red_char_device_vdi_port_finalize(GObject *object)
 {
     RedCharDeviceVDIPort *dev = RED_CHAR_DEVICE_VDIPORT(object);
 
-   free(dev->priv->mig_data);
+    g_free(dev->priv->mig_data);
    /* FIXME: need to free the RedVDIReadBuf allocated previously */
 
     G_OBJECT_CLASS(red_char_device_vdi_port_parent_class)->finalize(object);
commit e1a8571ceaf3fd391f51c5e22a4a583a2f2cc067
Author: Frediano Ziglio <fziglio at redhat.com>
Date:   Mon Sep 11 16:15:47 2017 +0100

    reds: Use GLib memory functions for link
    
    Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
    Acked-by: Jonathon Jongsma <jjongsma at redhat.com>

diff --git a/server/reds.c b/server/reds.c
index 8b081bbe..683af96f 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -345,7 +345,7 @@ static void reds_link_free(RedLinkInfo *link)
         link->tiTicketing.rsa = NULL;
     }
 
-    free(link);
+    g_free(link);
 }
 
 #ifdef RED_STATISTICS
@@ -2455,7 +2455,7 @@ static RedLinkInfo *reds_init_client_connection(RedsState *reds, int socket)
 
     red_socket_set_keepalive(socket, TRUE, KEEPALIVE_TIMEOUT);
 
-    link = spice_new0(RedLinkInfo, 1);
+    link = g_new0(RedLinkInfo, 1);
     link->reds = reds;
     link->stream = reds_stream_new(reds, socket);
 
commit 7922e8c78eb4f1189f33970e475370125f6d06da
Author: Frediano Ziglio <fziglio at redhat.com>
Date:   Mon Sep 11 16:15:46 2017 +0100

    reds: Start using GLib memory functions
    
    Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
    Acked-by: Jonathon Jongsma <jjongsma at redhat.com>

diff --git a/server/reds.c b/server/reds.c
index 13842fb1..8b081bbe 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -2051,7 +2051,7 @@ static void reds_handle_ticket(void *opaque)
                       RSA_size(link->tiTicketing.rsa), SPICE_MAX_PASSWORD_LENGTH);
     }
 
-    password = spice_malloc0(RSA_size(link->tiTicketing.rsa) + 1);
+    password = g_new0(char, RSA_size(link->tiTicketing.rsa) + 1);
     password_size = RSA_private_decrypt(link->tiTicketing.rsa_size,
                                         link->tiTicketing.encrypted_ticket.encrypted_data,
                                         (unsigned char *)password,
@@ -2092,7 +2092,7 @@ error:
     reds_link_free(link);
 
 end:
-    free(password);
+    g_free(password);
 }
 
 static void reds_get_spice_ticket(RedLinkInfo *link)
@@ -3500,7 +3500,7 @@ static const char default_video_codecs[] = "spice:mjpeg;" GSTREAMER_CODECS;
 SPICE_GNUC_VISIBLE SpiceServer *spice_server_new(void)
 {
     const char *record_filename;
-    RedsState *reds = spice_new0(RedsState, 1);
+    RedsState *reds = g_new0(RedsState, 1);
 
     reds->config = spice_new0(RedServerConfig, 1);
     reds->config->default_channel_security =
@@ -3672,6 +3672,7 @@ static void reds_set_video_codecs_from_string(RedsState *reds, const char *codec
             g_array_append_val(video_codecs, new_codec);
         }
 
+        /* these are allocated by sscanf, do not use g_free */
         free(encoder_name);
         free(codec_name);
         codecs = c;
@@ -3710,9 +3711,9 @@ static void reds_config_free(RedServerConfig *config)
         free(curr);
     }
 #if HAVE_SASL
-    free(config->sasl_appname);
+    g_free(config->sasl_appname);
 #endif
-    free(config->spice_name);
+    g_free(config->spice_name);
     g_array_unref(config->renderers);
     g_array_unref(config->video_codecs);
     free(config);
@@ -3761,7 +3762,7 @@ SPICE_GNUC_VISIBLE void spice_server_destroy(SpiceServer *reds)
 #endif
 
     reds_config_free(reds->config);
-    free(reds);
+    g_free(reds);
 }
 
 SPICE_GNUC_VISIBLE spice_compat_version_t spice_get_current_compat_version(void)
@@ -3840,8 +3841,8 @@ SPICE_GNUC_VISIBLE int spice_server_set_sasl(SpiceServer *s, int enabled)
 SPICE_GNUC_VISIBLE int spice_server_set_sasl_appname(SpiceServer *s, const char *appname)
 {
 #if HAVE_SASL
-    free(s->config->sasl_appname);
-    s->config->sasl_appname = spice_strdup(appname);
+    g_free(s->config->sasl_appname);
+    s->config->sasl_appname = g_strdup(appname);
     return 0;
 #else
     return -1;
@@ -3850,8 +3851,8 @@ SPICE_GNUC_VISIBLE int spice_server_set_sasl_appname(SpiceServer *s, const char
 
 SPICE_GNUC_VISIBLE void spice_server_set_name(SpiceServer *s, const char *name)
 {
-    free(s->config->spice_name);
-    s->config->spice_name = spice_strdup(name);
+    g_free(s->config->spice_name);
+    s->config->spice_name = g_strdup(name);
 }
 
 SPICE_GNUC_VISIBLE void spice_server_set_uuid(SpiceServer *s, const uint8_t uuid[16])
commit 0da0673bd35e1f0ffcda8374be47b305675ed95c
Author: Frediano Ziglio <fziglio at redhat.com>
Date:   Mon Sep 11 16:15:45 2017 +0100

    sound: Use GLib memory functions
    
    Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
    Acked-by: Jonathon Jongsma <jjongsma at redhat.com>

diff --git a/server/sound.c b/server/sound.c
index de51a467..9073626c 100644
--- a/server/sound.c
+++ b/server/sound.c
@@ -795,7 +795,7 @@ snd_channel_client_alloc_recv_buf(RedChannelClient *rcc, uint16_t type, uint32_t
     SndChannelClient *client = SND_CHANNEL_CLIENT(rcc);
     // If message is too big allocate one, this should never happen
     if (size > sizeof(client->receive_buf)) {
-        return spice_malloc(size);
+        return g_malloc(size);
     }
     return client->receive_buf;
 }
@@ -806,7 +806,7 @@ snd_channel_client_release_recv_buf(RedChannelClient *rcc, uint16_t type, uint32
 {
     SndChannelClient *client = SND_CHANNEL_CLIENT(rcc);
     if (msg != client->receive_buf) {
-        free(msg);
+        g_free(msg);
     }
 }
 
@@ -825,8 +825,8 @@ static void snd_channel_set_volume(SndChannel *channel,
     SndChannelClient *client = snd_channel_get_client(channel);
 
     st->volume_nchannels = nchannels;
-    free(st->volume);
-    st->volume = spice_memdup(volume, sizeof(uint16_t) * nchannels);
+    g_free(st->volume);
+    st->volume = g_memdup(volume, sizeof(uint16_t) * nchannels);
 
     if (!client || nchannels == 0)
         return;
@@ -951,7 +951,7 @@ SPICE_GNUC_VISIBLE void spice_server_playback_put_samples(SpicePlaybackInstance
     if (frame->allocated) {
         frame->allocated = false;
         if (--frame->container->refs == 0) {
-            free(frame->container);
+            g_free(frame->container);
             return;
         }
     }
@@ -1025,7 +1025,7 @@ playback_channel_client_finalize(GObject *object)
         playback_client->frames->items[i].client = NULL;
     }
     if (--playback_client->frames->refs == 0) {
-        free(playback_client->frames);
+        g_free(playback_client->frames);
     }
 
     if (client->active) {
@@ -1302,7 +1302,7 @@ snd_channel_finalize(GObject *object)
 
     remove_channel(channel);
 
-    free(channel->volume.volume);
+    g_free(channel->volume.volume);
     channel->volume.volume = NULL;
 
     G_OBJECT_CLASS(snd_channel_parent_class)->finalize(object);
@@ -1490,7 +1490,7 @@ static void snd_playback_alloc_frames(PlaybackChannelClient *playback)
 {
     int i;
 
-    playback->frames = spice_new0(AudioFrameContainer, 1);
+    playback->frames = g_new0(AudioFrameContainer, 1);
     playback->frames->refs = 1;
     for (i = 0; i < NUM_AUDIO_FRAMES; ++i) {
         playback->frames->items[i].container = playback->frames;
commit 8626f5bf3e017acf071b51ddef8654df4d4d70a2
Author: Frediano Ziglio <fziglio at redhat.com>
Date:   Mon Sep 11 16:15:44 2017 +0100

    image-encoders: Use GLib memory functions
    
    Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
    Acked-by: Jonathon Jongsma <jjongsma at redhat.com>

diff --git a/server/image-encoders.c b/server/image-encoders.c
index cf668968..880972e7 100644
--- a/server/image-encoders.c
+++ b/server/image-encoders.c
@@ -164,32 +164,32 @@ glz_usr_warn(GlzEncoderUsrContext *usr, const char *fmt, ...)
 
 static void *quic_usr_malloc(QuicUsrContext *usr, int size)
 {
-    return spice_malloc(size);
+    return g_malloc(size);
 }
 
 static void *lz_usr_malloc(LzUsrContext *usr, int size)
 {
-    return spice_malloc(size);
+    return g_malloc(size);
 }
 
 static void *glz_usr_malloc(GlzEncoderUsrContext *usr, int size)
 {
-    return spice_malloc(size);
+    return g_malloc(size);
 }
 
 static void quic_usr_free(QuicUsrContext *usr, void *ptr)
 {
-    free(ptr);
+    g_free(ptr);
 }
 
 static void lz_usr_free(LzUsrContext *usr, void *ptr)
 {
-    free(ptr);
+    g_free(ptr);
 }
 
 static void glz_usr_free(GlzEncoderUsrContext *usr, void *ptr)
 {
-    free(ptr);
+    g_free(ptr);
 }
 
 static void encoder_data_init(EncoderData *data)
@@ -527,7 +527,7 @@ static void glz_drawable_instance_item_free(GlzDrawableInstanceItem *instance)
         if (ring_item_is_linked(&glz_drawable->link)) {
             ring_remove(&glz_drawable->link);
         }
-        free(glz_drawable);
+        g_free(glz_drawable);
     }
 }
 
@@ -686,7 +686,7 @@ static GlzSharedDictionary *glz_shared_dictionary_new(RedClient *client, uint8_t
 {
     spice_return_val_if_fail(dict != NULL, NULL);
 
-    GlzSharedDictionary *shared_dict = spice_new0(GlzSharedDictionary, 1);
+    GlzSharedDictionary *shared_dict = g_new0(GlzSharedDictionary, 1);
 
     shared_dict->dict = dict;
     shared_dict->id = id;
@@ -824,7 +824,7 @@ static void image_encoders_release_glz(ImageEncoders *enc)
     pthread_mutex_unlock(&glz_dictionary_list_lock);
     glz_enc_dictionary_destroy(shared_dict->dict, &enc->glz_data.usr);
     pthread_rwlock_destroy(&shared_dict->encode_lock);
-    free(shared_dict);
+    g_free(shared_dict);
 }
 
 bool image_encoders_compress_quic(ImageEncoders *enc, SpiceImage *dest,
@@ -1172,7 +1172,7 @@ static RedGlzDrawable *get_glz_drawable(ImageEncoders *enc, RedDrawable *red_dra
         }
     }
 
-    ret = spice_new(RedGlzDrawable, 1);
+    ret = g_new(RedGlzDrawable, 1);
 
     ret->encoders = enc;
     ret->red_drawable = red_drawable_ref(red_drawable);
commit a99043771ae57fe97f8dac6f5c92e714bfc74ea2
Author: Frediano Ziglio <fziglio at redhat.com>
Date:   Mon Sep 11 16:15:43 2017 +0100

    Start using GLib memory allocation
    
    Start reducing the usage of spice_new*/spice_malloc allocations.
    They were designed in a similar way to GLib ones.
    Now that we use GLib make sense to remove them.
    However the versions we support for GLib can use different memory
    allocators so we have to match g_free with GLib allocations
    and spice_* ones (which uses always malloc allocator) with free().
    This patch remove some easy ones.
    
    Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
    Acked-by: Jonathon Jongsma <jjongsma at redhat.com>

diff --git a/server/common-graphics-channel.c b/server/common-graphics-channel.c
index a664f05d..0cbc2762 100644
--- a/server/common-graphics-channel.c
+++ b/server/common-graphics-channel.c
@@ -56,7 +56,7 @@ static uint8_t *common_alloc_recv_buf(RedChannelClient *rcc, uint16_t type, uint
 
     /* SPICE_MSGC_MIGRATE_DATA is the only client message whose size is dynamic */
     if (type == SPICE_MSGC_MIGRATE_DATA) {
-        return spice_malloc(size);
+        return g_malloc(size);
     }
 
     if (size > CHANNEL_RECEIVE_BUF_SIZE) {
@@ -70,7 +70,7 @@ static void common_release_recv_buf(RedChannelClient *rcc, uint16_t type, uint32
                                     uint8_t* msg)
 {
     if (type == SPICE_MSGC_MIGRATE_DATA) {
-        free(msg);
+        g_free(msg);
     }
 }
 
diff --git a/server/dcc-send.c b/server/dcc-send.c
index 18e226f0..8692cff2 100644
--- a/server/dcc-send.c
+++ b/server/dcc-send.c
@@ -2280,7 +2280,7 @@ static void marshall_monitors_config(RedChannelClient *rcc, SpiceMarshaller *bas
 {
     int heads_size = sizeof(SpiceHead) * monitors_config->count;
     int i;
-    SpiceMsgDisplayMonitorsConfig *msg = spice_malloc0(sizeof(*msg) + heads_size);
+    SpiceMsgDisplayMonitorsConfig *msg = g_malloc0(sizeof(*msg) + heads_size);
     int count = 0; // ignore monitors_config->count, it may contain zero width monitors, remove them now
 
     red_channel_client_init_send_data(rcc, SPICE_MSG_DISPLAY_MONITORS_CONFIG);
@@ -2299,7 +2299,7 @@ static void marshall_monitors_config(RedChannelClient *rcc, SpiceMarshaller *bas
     msg->count = count;
     msg->max_allowed = monitors_config->max_allowed;
     spice_marshall_msg_display_monitors_config(base_marshaller, msg);
-    free(msg);
+    g_free(msg);
 }
 
 static void marshall_stream_activate_report(RedChannelClient *rcc,
diff --git a/server/display-channel.c b/server/display-channel.c
index f7e36dbb..fbdca265 100644
--- a/server/display-channel.c
+++ b/server/display-channel.c
@@ -2014,7 +2014,7 @@ static void region_to_qxlrects(QRegion *region, QXLRect *qxl_rects, uint32_t num
     SpiceRect *rects;
     int i;
 
-    rects = spice_new0(SpiceRect, num_rects);
+    rects = g_new0(SpiceRect, num_rects);
     region_ret_rects(region, rects, num_rects);
     for (i = 0; i < num_rects; i++) {
         qxl_rects[i].top    = rects[i].top;
@@ -2022,7 +2022,7 @@ static void region_to_qxlrects(QRegion *region, QXLRect *qxl_rects, uint32_t num
         qxl_rects[i].bottom = rects[i].bottom;
         qxl_rects[i].right  = rects[i].right;
     }
-    free(rects);
+    g_free(rects);
 }
 
 void display_channel_update(DisplayChannel *display,
@@ -2040,7 +2040,7 @@ void display_channel_update(DisplayChannel *display,
     surface = &display->priv->surfaces[surface_id];
     if (*qxl_dirty_rects == NULL) {
         *num_dirty_rects = pixman_region32_n_rects(&surface->draw_dirty_region);
-        *qxl_dirty_rects = spice_new0(QXLRect, *num_dirty_rects);
+        *qxl_dirty_rects = g_new0(QXLRect, *num_dirty_rects);
     }
 
     region_to_qxlrects(&surface->draw_dirty_region, *qxl_dirty_rects, *num_dirty_rects);
diff --git a/server/jpeg-encoder.c b/server/jpeg-encoder.c
index 5c5edf14..a6eaf86f 100644
--- a/server/jpeg-encoder.c
+++ b/server/jpeg-encoder.c
@@ -84,7 +84,7 @@ JpegEncoderContext* jpeg_encoder_create(JpegEncoderUsrContext *usr)
         return NULL;
     }
 
-    enc = spice_new0(JpegEncoder, 1);
+    enc = g_new0(JpegEncoder, 1);
 
     enc->usr = usr;
 
@@ -103,7 +103,7 @@ JpegEncoderContext* jpeg_encoder_create(JpegEncoderUsrContext *usr)
 void jpeg_encoder_destroy(JpegEncoderContext* encoder)
 {
     jpeg_destroy_compress(&((JpegEncoder*)encoder)->cinfo);
-    free(encoder);
+    g_free(encoder);
 }
 
 static void convert_RGB16_to_RGB24(void *line, int width, uint8_t **out_line)
@@ -185,7 +185,7 @@ static void do_jpeg_encode(JpegEncoder *jpeg, uint8_t *lines, unsigned int num_l
     stride = jpeg->cur_image.stride;
 
     if (jpeg->cur_image.type != JPEG_IMAGE_TYPE_RGB24) {
-        RGB24_line = (uint8_t *)spice_malloc(width*3);
+        RGB24_line = g_new(uint8_t, width*3);
     }
 
     lines_end = lines + (stride * num_lines);
@@ -198,7 +198,7 @@ static void do_jpeg_encode(JpegEncoder *jpeg, uint8_t *lines, unsigned int num_l
     }
 
     if (jpeg->cur_image.type != JPEG_IMAGE_TYPE_RGB24) {
-        free(RGB24_line);
+        g_free(RGB24_line);
     }
 }
 
diff --git a/server/lz4-encoder.c b/server/lz4-encoder.c
index 10483490..fe736d27 100644
--- a/server/lz4-encoder.c
+++ b/server/lz4-encoder.c
@@ -34,7 +34,7 @@ Lz4EncoderContext* lz4_encoder_create(Lz4EncoderUsrContext *usr)
         return NULL;
     }
 
-    enc = spice_new0(Lz4Encoder, 1);
+    enc = g_new0(Lz4Encoder, 1);
     enc->usr = usr;
 
     return (Lz4EncoderContext*)enc;
@@ -42,7 +42,7 @@ Lz4EncoderContext* lz4_encoder_create(Lz4EncoderUsrContext *usr)
 
 void lz4_encoder_destroy(Lz4EncoderContext* encoder)
 {
-    free(encoder);
+    g_free(encoder);
 }
 
 int lz4_encode(Lz4EncoderContext *lz4, int height, int stride, uint8_t *io_ptr,
diff --git a/server/main-channel-client.c b/server/main-channel-client.c
index 4abab6c6..b7b60edd 100644
--- a/server/main-channel-client.c
+++ b/server/main-channel-client.c
@@ -238,17 +238,17 @@ static bool main_channel_client_push_ping(MainChannelClient *mcc, int size);
 static void main_notify_item_free(RedPipeItem *base)
 {
     RedNotifyPipeItem *data = SPICE_UPCAST(RedNotifyPipeItem, base);
-    free(data->msg);
-    free(data);
+    g_free(data->msg);
+    g_free(data);
 }
 
 static RedPipeItem *main_notify_item_new(const char *msg, int num)
 {
-    RedNotifyPipeItem *item = spice_malloc(sizeof(RedNotifyPipeItem));
+    RedNotifyPipeItem *item = g_new(RedNotifyPipeItem, 1);
 
     red_pipe_item_init_full(&item->base, RED_PIPE_ITEM_TYPE_MAIN_NOTIFY,
                             main_notify_item_free);
-    item->msg = spice_strdup(msg);
+    item->msg = g_strdup(msg);
     return &item->base;
 }
 
@@ -314,14 +314,14 @@ static void main_agent_data_item_free(RedPipeItem *base)
 {
     RedAgentDataPipeItem *item = SPICE_UPCAST(RedAgentDataPipeItem, base);
     item->free_data(item->data, item->opaque);
-    free(item);
+    g_free(item);
 }
 
 static RedPipeItem *main_agent_data_item_new(uint8_t* data, size_t len,
                                              spice_marshaller_item_free_func free_data,
                                              void *opaque)
 {
-    RedAgentDataPipeItem *item = spice_malloc(sizeof(RedAgentDataPipeItem));
+    RedAgentDataPipeItem *item = g_new(RedAgentDataPipeItem, 1);
 
     red_pipe_item_init_full(&item->base, RED_PIPE_ITEM_TYPE_MAIN_AGENT_DATA,
                             main_agent_data_item_free);
@@ -722,7 +722,7 @@ static void main_channel_marshall_channels(RedChannelClient *rcc,
     red_channel_client_init_send_data(rcc, SPICE_MSG_MAIN_CHANNELS_LIST);
     channels_info = reds_msg_channels_new(red_channel_get_server(channel));
     spice_marshall_msg_main_channels_list(m, channels_info);
-    free(channels_info);
+    g_free(channels_info);
 }
 
 static void main_channel_marshall_ping(RedChannelClient *rcc,
diff --git a/server/memslot.c b/server/memslot.c
index fdcd0232..7074b432 100644
--- a/server/memslot.c
+++ b/server/memslot.c
@@ -152,10 +152,10 @@ void memslot_info_init(RedMemSlotInfo *info,
     info->mem_slot_bits = id_bits;
     info->internal_groupslot_id = internal_groupslot_id;
 
-    info->mem_slots = spice_new(MemSlot *, num_groups);
+    info->mem_slots = g_new(MemSlot *, num_groups);
 
     for (i = 0; i < num_groups; ++i) {
-        info->mem_slots[i] = spice_new0(MemSlot, num_slots);
+        info->mem_slots[i] = g_new0(MemSlot, num_slots);
     }
 
     /* TODO: use QXLPHYSICAL_BITS */
@@ -171,9 +171,9 @@ void memslot_info_destroy(RedMemSlotInfo *info)
     uint32_t i;
 
     for (i = 0; i < info->num_memslots_groups; ++i) {
-        free(info->mem_slots[i]);
+        g_free(info->mem_slots[i]);
     }
-    free(info->mem_slots);
+    g_free(info->mem_slots);
 }
 
 void memslot_info_add_slot(RedMemSlotInfo *info, uint32_t slot_group_id, uint32_t slot_id,
diff --git a/server/red-channel-capabilities.c b/server/red-channel-capabilities.c
index 5a3984ab..2113c6e9 100644
--- a/server/red-channel-capabilities.c
+++ b/server/red-channel-capabilities.c
@@ -31,24 +31,24 @@ void red_channel_capabilities_init(RedChannelCapabilities *dest,
 {
     *dest = *caps;
     if (caps->common_caps) {
-        dest->common_caps = spice_memdup(caps->common_caps,
-                                         caps->num_common_caps * sizeof(uint32_t));
+        dest->common_caps = g_memdup(caps->common_caps,
+                                     caps->num_common_caps * sizeof(uint32_t));
     }
     if (caps->num_caps) {
-        dest->caps = spice_memdup(caps->caps, caps->num_caps * sizeof(uint32_t));
+        dest->caps = g_memdup(caps->caps, caps->num_caps * sizeof(uint32_t));
     }
 }
 
 void red_channel_capabilities_reset(RedChannelCapabilities *caps)
 {
-    free(caps->common_caps);
-    free(caps->caps);
+    g_free(caps->common_caps);
+    g_free(caps->caps);
     memset(caps, 0, sizeof(*caps));
 }
 
 static RedChannelCapabilities *red_channel_capabilities_dup(const RedChannelCapabilities *caps)
 {
-    RedChannelCapabilities *res = spice_new(RedChannelCapabilities, 1);
+    RedChannelCapabilities *res = g_new(RedChannelCapabilities, 1);
     red_channel_capabilities_init(res, caps);
     return res;
 }
@@ -56,7 +56,7 @@ static RedChannelCapabilities *red_channel_capabilities_dup(const RedChannelCapa
 static void red_channel_capabilities_free(RedChannelCapabilities *caps)
 {
     red_channel_capabilities_reset(caps);
-    free(caps);
+    g_free(caps);
 }
 
 SPICE_CONSTRUCTOR_FUNC(red_channel_capabilities_construct)
diff --git a/server/red-qxl.c b/server/red-qxl.c
index be44c28b..7dc13bbd 100644
--- a/server/red-qxl.c
+++ b/server/red-qxl.c
@@ -889,7 +889,7 @@ void red_qxl_init(RedsState *reds, QXLInstance *qxl)
 
     spice_return_if_fail(qxl != NULL);
 
-    qxl_state = spice_new0(QXLState, 1);
+    qxl_state = g_new0(QXLState, 1);
     qxl_state->reds = reds;
     qxl_state->qxl = qxl;
     pthread_mutex_init(&qxl_state->scanout_mutex, NULL);
@@ -949,7 +949,7 @@ void red_qxl_destroy(QXLInstance *qxl)
     /* this must be done after calling red_worker_free */
     qxl->st = NULL;
     pthread_mutex_destroy(&qxl_state->scanout_mutex);
-    free(qxl_state);
+    g_free(qxl_state);
 }
 
 Dispatcher *red_qxl_get_dispatcher(QXLInstance *qxl)
diff --git a/server/red-worker.c b/server/red-worker.c
index fa44d6f3..8a63fde2 100644
--- a/server/red-worker.c
+++ b/server/red-worker.c
@@ -431,7 +431,7 @@ static void handle_dev_update_async(void *opaque, void *payload)
 
     red_qxl_update_area_complete(worker->qxl, msg->surface_id,
                                  qxl_dirty_rects, num_dirty_rects);
-    free(qxl_dirty_rects);
+    g_free(qxl_dirty_rects);
     red_qxl_async_complete(worker->qxl, msg->base.cookie);
 }
 
@@ -448,7 +448,7 @@ static void handle_dev_update(void *opaque, void *payload)
                            msg->surface_id, msg->qxl_area, msg->clear_dirty_region,
                            &qxl_dirty_rects, &msg->num_dirty_rects);
     if (msg->qxl_dirty_rects == NULL) {
-        free(qxl_dirty_rects);
+        g_free(qxl_dirty_rects);
     }
 }
 
@@ -1289,7 +1289,7 @@ RedWorker* red_worker_new(QXLInstance *qxl,
 
     red_qxl_get_init_info(qxl, &init_info);
 
-    worker = spice_new0(RedWorker, 1);
+    worker = g_new0(RedWorker, 1);
     worker->core = event_loop_core;
     worker->core.main_context = g_main_context_new();
 
@@ -1429,5 +1429,5 @@ void red_worker_free(RedWorker *worker)
         red_record_unref(worker->record);
     }
     memslot_info_destroy(&worker->mem_slots);
-    free(worker);
+    g_free(worker);
 }
diff --git a/server/reds.c b/server/reds.c
index a73d00f7..13842fb1 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -1004,7 +1004,7 @@ SpiceMsgChannels *reds_msg_channels_new(RedsState *reds)
 
     spice_assert(reds != NULL);
 
-    channels_info = (SpiceMsgChannels *)spice_malloc(sizeof(SpiceMsgChannels)
+    channels_info = (SpiceMsgChannels *)g_malloc(sizeof(SpiceMsgChannels)
                             + g_list_length(reds->channels) * sizeof(SpiceChannelId));
 
     reds_fill_channels(reds, channels_info);
@@ -1749,14 +1749,14 @@ red_channel_capabilities_init_from_link_message(RedChannelCapabilities *caps,
     caps->num_common_caps = link_mess->num_common_caps;
     caps->common_caps = NULL;
     if (caps->num_common_caps) {
-        caps->common_caps = spice_memdup(raw_caps,
-                                         link_mess->num_common_caps * sizeof(uint32_t));
+        caps->common_caps = g_memdup(raw_caps,
+                                     link_mess->num_common_caps * sizeof(uint32_t));
     }
     caps->num_caps = link_mess->num_channel_caps;
     caps->caps = NULL;
     if (link_mess->num_channel_caps) {
-        caps->caps = spice_memdup(raw_caps + link_mess->num_common_caps,
-                                  link_mess->num_channel_caps * sizeof(uint32_t));
+        caps->caps = g_memdup(raw_caps + link_mess->num_common_caps,
+                              link_mess->num_channel_caps * sizeof(uint32_t));
     }
 }
 
diff --git a/server/smartcard-channel-client.c b/server/smartcard-channel-client.c
index 7a2ef0dd..07d451f4 100644
--- a/server/smartcard-channel-client.c
+++ b/server/smartcard-channel-client.c
@@ -135,7 +135,7 @@ smartcard_channel_client_alloc_msg_rcv_buf(RedChannelClient *rcc,
      * differenc channels */
     if (!scc->priv->smartcard) {
         scc->priv->msg_in_write_buf = FALSE;
-        return spice_malloc(size);
+        return g_malloc(size);
     } else {
         RedCharDeviceSmartcard *smartcard;
 
@@ -168,7 +168,7 @@ smartcard_channel_client_release_msg_rcv_buf(RedChannelClient *rcc,
 
     if (!scc->priv->msg_in_write_buf) {
         spice_assert(!scc->priv->write_buf);
-        free(msg);
+        g_free(msg);
     } else {
         if (scc->priv->write_buf) { /* msg hasn't been pushed to the guest */
             spice_assert(scc->priv->write_buf->buf == msg);
diff --git a/server/stat-file.c b/server/stat-file.c
index 96c3bc18..2797fd73 100644
--- a/server/stat-file.c
+++ b/server/stat-file.c
@@ -29,7 +29,6 @@
 #include <sys/mman.h>
 #include <spice/stats.h>
 #include <common/log.h>
-#include <common/mem.h>
 
 #include "stat-file.h"
 
@@ -47,7 +46,7 @@ RedStatFile *stat_file_new(unsigned int max_nodes)
 {
     int fd;
     size_t shm_size = STAT_SHM_SIZE(max_nodes);
-    RedStatFile *stat_file = spice_new0(RedStatFile, 1);
+    RedStatFile *stat_file = g_new0(RedStatFile, 1);
 
     stat_file->max_nodes = max_nodes;
     stat_file->shm_name = g_strdup_printf(SPICE_STAT_SHM_NAME, getpid());
@@ -78,7 +77,7 @@ RedStatFile *stat_file_new(unsigned int max_nodes)
     return stat_file;
 
 cleanup:
-    free(stat_file);
+    g_free(stat_file);
     return NULL;
 }
 
@@ -96,7 +95,7 @@ void stat_file_free(RedStatFile *stat_file)
 #endif
 
     pthread_mutex_destroy(&stat_file->lock);
-    free(stat_file);
+    g_free(stat_file);
 }
 
 const char *stat_file_get_shm_name(RedStatFile *stat_file)
diff --git a/server/stream.c b/server/stream.c
index 51dfc884..71755ea1 100644
--- a/server/stream.c
+++ b/server/stream.c
@@ -68,12 +68,12 @@ static void stream_create_destroy_item_release(RedPipeItem *base)
     StreamCreateDestroyItem *item = SPICE_UPCAST(StreamCreateDestroyItem, base);
     DisplayChannel *display = DCC_TO_DC(item->agent->dcc);
     stream_agent_unref(display, item->agent);
-    free(item);
+    g_free(item);
 }
 
 static RedPipeItem *stream_create_destroy_item_new(StreamAgent *agent, gint type)
 {
-    StreamCreateDestroyItem *item = spice_new0(StreamCreateDestroyItem, 1);
+    StreamCreateDestroyItem *item = g_new0(StreamCreateDestroyItem, 1);
 
     red_pipe_item_init_full(&item->base, type,
                             stream_create_destroy_item_release);
@@ -170,12 +170,12 @@ static void red_stream_clip_item_free(RedPipeItem *base)
 
     stream_agent_unref(display, item->stream_agent);
     free(item->rects);
-    free(item);
+    g_free(item);
 }
 
 RedStreamClipItem *red_stream_clip_item_new(StreamAgent *agent)
 {
-    RedStreamClipItem *item = spice_new(RedStreamClipItem, 1);
+    RedStreamClipItem *item = g_new(RedStreamClipItem, 1);
     red_pipe_item_init_full(&item->base, RED_PIPE_ITEM_TYPE_STREAM_CLIP,
                             red_stream_clip_item_free);
 
@@ -778,7 +778,7 @@ static void red_upgrade_item_free(RedPipeItem *base)
 
     drawable_unref(item->drawable);
     free(item->rects);
-    free(item);
+    g_free(item);
 }
 
 /*
@@ -819,7 +819,7 @@ static void dcc_detach_stream_gracefully(DisplayChannelClient *dcc,
         spice_debug("stream %d: upgrade by drawable. box ==>", stream_id);
         rect_debug(&stream->current->red_drawable->bbox);
         rcc = RED_CHANNEL_CLIENT(dcc);
-        upgrade_item = spice_new(RedUpgradeItem, 1);
+        upgrade_item = g_new(RedUpgradeItem, 1);
         red_pipe_item_init_full(&upgrade_item->base, RED_PIPE_ITEM_TYPE_UPGRADE,
                                 red_upgrade_item_free);
         upgrade_item->drawable = stream->current;
diff --git a/server/zlib-encoder.c b/server/zlib-encoder.c
index 1579ed78..7b98abbb 100644
--- a/server/zlib-encoder.c
+++ b/server/zlib-encoder.c
@@ -40,7 +40,7 @@ ZlibEncoder* zlib_encoder_create(ZlibEncoderUsrContext *usr, int level)
         return NULL;
     }
 
-    enc = spice_new0(ZlibEncoder, 1);
+    enc = g_new0(ZlibEncoder, 1);
 
     enc->usr = usr;
 
@@ -52,7 +52,7 @@ ZlibEncoder* zlib_encoder_create(ZlibEncoderUsrContext *usr, int level)
     enc->last_level = level;
     if (z_ret != Z_OK) {
         spice_printerr("zlib error");
-        free(enc);
+        g_free(enc);
         return NULL;
     }
 
@@ -62,7 +62,7 @@ ZlibEncoder* zlib_encoder_create(ZlibEncoderUsrContext *usr, int level)
 void zlib_encoder_destroy(ZlibEncoder *encoder)
 {
     deflateEnd(&encoder->strm);
-    free(encoder);
+    g_free(encoder);
 }
 
 /* returns the total size of the encoded data */


More information about the Spice-commits mailing list