diff mbox

[v2,1/4] ui: Use g_new() & friends where that makes obvious sense

Message ID 1446134122-32292-2-git-send-email-armbru@redhat.com
State New
Headers show

Commit Message

Markus Armbruster Oct. 29, 2015, 3:55 p.m. UTC
g_new(T, n) is neater than g_malloc(sizeof(T) * n).  It's also safer,
for two reasons.  One, it catches multiplication overflowing size_t.
Two, it returns T * rather than void *, which lets the compiler catch
more type errors.

This commit only touches allocations with size arguments of the form
sizeof(T).  Same Coccinelle semantic patch as in commit b45c03f.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
---
 ui/console.c      | 2 +-
 ui/curses.c       | 2 +-
 ui/input-legacy.c | 4 ++--
 ui/keymaps.c      | 2 +-
 ui/sdl.c          | 2 +-
 ui/vnc-jobs.c     | 6 +++---
 ui/vnc.c          | 6 +++---
 7 files changed, 12 insertions(+), 12 deletions(-)

Comments

Michael Tokarev Nov. 3, 2015, 12:06 p.m. UTC | #1
29.10.2015 18:55, Markus Armbruster wrote:
> g_new(T, n) is neater than g_malloc(sizeof(T) * n).  It's also safer,
> for two reasons.  One, it catches multiplication overflowing size_t.
> Two, it returns T * rather than void *, which lets the compiler catch
> more type errors.
> 
> This commit only touches allocations with size arguments of the form
> sizeof(T).  Same Coccinelle semantic patch as in commit b45c03f.
> 
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> Reviewed-by: Eric Blake <eblake@redhat.com>
> ---
>  ui/console.c      | 2 +-
>  ui/curses.c       | 2 +-
>  ui/input-legacy.c | 4 ++--
>  ui/keymaps.c      | 2 +-
>  ui/sdl.c          | 2 +-
>  ui/vnc-jobs.c     | 6 +++---
>  ui/vnc.c          | 6 +++---
>  7 files changed, 12 insertions(+), 12 deletions(-)

ui/vnc.c code has been modified by Eric Blake meanwhile,
in 2d32addae70987521578d8bb27c6b3f52cdcbdcb "sockets:
Convert to new qapi union layout".

The patch applies for other files however.

Thanks,

/mjt
Markus Armbruster Nov. 3, 2015, 1:49 p.m. UTC | #2
Michael Tokarev <mjt@tls.msk.ru> writes:

> 29.10.2015 18:55, Markus Armbruster wrote:
>> g_new(T, n) is neater than g_malloc(sizeof(T) * n).  It's also safer,
>> for two reasons.  One, it catches multiplication overflowing size_t.
>> Two, it returns T * rather than void *, which lets the compiler catch
>> more type errors.
>> 
>> This commit only touches allocations with size arguments of the form
>> sizeof(T).  Same Coccinelle semantic patch as in commit b45c03f.
>> 
>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>> Reviewed-by: Eric Blake <eblake@redhat.com>
>> ---
>>  ui/console.c      | 2 +-
>>  ui/curses.c       | 2 +-
>>  ui/input-legacy.c | 4 ++--
>>  ui/keymaps.c      | 2 +-
>>  ui/sdl.c          | 2 +-
>>  ui/vnc-jobs.c     | 6 +++---
>>  ui/vnc.c          | 6 +++---
>>  7 files changed, 12 insertions(+), 12 deletions(-)
>
> ui/vnc.c code has been modified by Eric Blake meanwhile,
> in 2d32addae70987521578d8bb27c6b3f52cdcbdcb "sockets:
> Convert to new qapi union layout".
>
> The patch applies for other files however.

I can regenerate this patch easily.  Would you be willing to replace it
in your tree by a v3?
diff mbox

Patch

diff --git a/ui/console.c b/ui/console.c
index cf649b2..b862cfb 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -450,7 +450,7 @@  static void text_console_resize(QemuConsole *s)
     if (s->width < w1)
         w1 = s->width;
 
-    cells = g_malloc(s->width * s->total_height * sizeof(TextCell));
+    cells = g_new(TextCell, s->width * s->total_height);
     for(y = 0; y < s->total_height; y++) {
         c = &cells[y * s->width];
         if (w1 > 0) {
diff --git a/ui/curses.c b/ui/curses.c
index 8edb038..db83188 100644
--- a/ui/curses.c
+++ b/ui/curses.c
@@ -382,7 +382,7 @@  void curses_display_init(DisplayState *ds, int full_screen)
 
     curses_winch_init();
 
-    dcl = (DisplayChangeListener *) g_malloc0(sizeof(DisplayChangeListener));
+    dcl = g_new0(DisplayChangeListener, 1);
     dcl->ops = &dcl_ops;
     register_displaychangelistener(dcl);
 
diff --git a/ui/input-legacy.c b/ui/input-legacy.c
index e50f296..c5f173d 100644
--- a/ui/input-legacy.c
+++ b/ui/input-legacy.c
@@ -205,7 +205,7 @@  QEMUPutMouseEntry *qemu_add_mouse_event_handler(QEMUPutMouseEvent *func,
 {
     QEMUPutMouseEntry *s;
 
-    s = g_malloc0(sizeof(QEMUPutMouseEntry));
+    s = g_new0(QEMUPutMouseEntry, 1);
 
     s->qemu_put_mouse_event = func;
     s->qemu_put_mouse_event_opaque = opaque;
@@ -239,7 +239,7 @@  QEMUPutLEDEntry *qemu_add_led_event_handler(QEMUPutLEDEvent *func,
 {
     QEMUPutLEDEntry *s;
 
-    s = g_malloc0(sizeof(QEMUPutLEDEntry));
+    s = g_new0(QEMUPutLEDEntry, 1);
 
     s->put_led = func;
     s->opaque = opaque;
diff --git a/ui/keymaps.c b/ui/keymaps.c
index 49410ae..1b9ba3f 100644
--- a/ui/keymaps.c
+++ b/ui/keymaps.c
@@ -109,7 +109,7 @@  static kbd_layout_t *parse_keyboard_layout(const name2keysym_t *table,
     }
 
     if (!k) {
-        k = g_malloc0(sizeof(kbd_layout_t));
+        k = g_new0(kbd_layout_t, 1);
     }
 
     for(;;) {
diff --git a/ui/sdl.c b/ui/sdl.c
index 3be2910..570cb99 100644
--- a/ui/sdl.c
+++ b/ui/sdl.c
@@ -985,7 +985,7 @@  void sdl_display_init(DisplayState *ds, int full_screen, int no_frame)
         sdl_grab_start();
     }
 
-    dcl = g_malloc0(sizeof(DisplayChangeListener));
+    dcl = g_new0(DisplayChangeListener, 1);
     dcl->ops = &dcl_ops;
     register_displaychangelistener(dcl);
 
diff --git a/ui/vnc-jobs.c b/ui/vnc-jobs.c
index 22c9abc..9512b87 100644
--- a/ui/vnc-jobs.c
+++ b/ui/vnc-jobs.c
@@ -79,7 +79,7 @@  static void vnc_unlock_queue(VncJobQueue *queue)
 
 VncJob *vnc_job_new(VncState *vs)
 {
-    VncJob *job = g_malloc0(sizeof(VncJob));
+    VncJob *job = g_new0(VncJob, 1);
 
     job->vs = vs;
     vnc_lock_queue(queue);
@@ -90,7 +90,7 @@  VncJob *vnc_job_new(VncState *vs)
 
 int vnc_job_add_rect(VncJob *job, int x, int y, int w, int h)
 {
-    VncRectEntry *entry = g_malloc0(sizeof(VncRectEntry));
+    VncRectEntry *entry = g_new0(VncRectEntry, 1);
 
     entry->rect.x = x;
     entry->rect.y = y;
@@ -298,7 +298,7 @@  disconnected:
 
 static VncJobQueue *vnc_queue_init(void)
 {
-    VncJobQueue *queue = g_malloc0(sizeof(VncJobQueue));
+    VncJobQueue *queue = g_new0(VncJobQueue, 1);
 
     qemu_cond_init(&queue->cond);
     qemu_mutex_init(&queue->mutex);
diff --git a/ui/vnc.c b/ui/vnc.c
index faff054..2725934 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -173,7 +173,7 @@  static VncBasicInfo *vnc_basic_info_get(struct sockaddr_storage *sa,
         return NULL;
     }
 
-    info = g_malloc0(sizeof(VncBasicInfo));
+    info = g_new0(VncBasicInfo, 1);
     info->host = g_strdup(host);
     info->service = g_strdup(serv);
     info->family = inet_netfamily(sa->ss_family);
@@ -2956,7 +2956,7 @@  static void vnc_refresh(DisplayChangeListener *dcl)
 static void vnc_connect(VncDisplay *vd, int csock,
                         bool skipauth, bool websocket)
 {
-    VncState *vs = g_malloc0(sizeof(VncState));
+    VncState *vs = g_new0(VncState, 1);
     int i;
 
     vs->csock = csock;
@@ -2979,7 +2979,7 @@  static void vnc_connect(VncDisplay *vd, int csock,
 
     vs->lossy_rect = g_malloc0(VNC_STAT_ROWS * sizeof (*vs->lossy_rect));
     for (i = 0; i < VNC_STAT_ROWS; ++i) {
-        vs->lossy_rect[i] = g_malloc0(VNC_STAT_COLS * sizeof (uint8_t));
+        vs->lossy_rect[i] = g_new0(uint8_t, VNC_STAT_COLS);
     }
 
     VNC_DEBUG("New client on socket %d\n", csock);