* [Qemu-devel] [PATCH] ui: Use g_new() & friends where that makes obvious sense
@ 2015-09-14 11:03 Markus Armbruster
2015-09-14 15:30 ` Eric Blake
0 siblings, 1 reply; 3+ messages in thread
From: Markus Armbruster @ 2015-09-14 11:03 UTC (permalink / raw
To: qemu-devel; +Cc: kraxel
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>
---
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(-)
diff --git a/ui/console.c b/ui/console.c
index 75fc492..6edda1e 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -449,7 +449,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 caf82f5..94df777 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -170,7 +170,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);
@@ -3002,7 +3002,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;
@@ -3025,7 +3025,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);
--
2.4.3
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] [PATCH] ui: Use g_new() & friends where that makes obvious sense
2015-09-14 11:03 [Qemu-devel] [PATCH] ui: Use g_new() & friends where that makes obvious sense Markus Armbruster
@ 2015-09-14 15:30 ` Eric Blake
2015-09-14 17:44 ` Markus Armbruster
0 siblings, 1 reply; 3+ messages in thread
From: Eric Blake @ 2015-09-14 15:30 UTC (permalink / raw
To: Markus Armbruster, qemu-devel; +Cc: kraxel
[-- Attachment #1: Type: text/plain, Size: 1910 bytes --]
On 09/14/2015 05:03 AM, 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>
> ---
> 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(-)
Reviewed-by: Eric Blake <eblake@redhat.com>
>
> diff --git a/ui/console.c b/ui/console.c
> index 75fc492..6edda1e 100644
> --- a/ui/console.c
> +++ b/ui/console.c
> @@ -449,7 +449,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);
Hopefully s->width * s->total_height can't overflow.
> @@ -3025,7 +3025,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);
sizeof(uint8_t) == 1, according to POSIX. This could be further
simplified to g_malloc0(VNC_STAT_COLS). But if someone wants to do that
simplification, it should be a separate patch.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] [PATCH] ui: Use g_new() & friends where that makes obvious sense
2015-09-14 15:30 ` Eric Blake
@ 2015-09-14 17:44 ` Markus Armbruster
0 siblings, 0 replies; 3+ messages in thread
From: Markus Armbruster @ 2015-09-14 17:44 UTC (permalink / raw
To: Eric Blake; +Cc: qemu-devel, kraxel
Eric Blake <eblake@redhat.com> writes:
> On 09/14/2015 05:03 AM, 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>
>> ---
>> 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(-)
>
> Reviewed-by: Eric Blake <eblake@redhat.com>
>
>>
>> diff --git a/ui/console.c b/ui/console.c
>> index 75fc492..6edda1e 100644
>> --- a/ui/console.c
>> +++ b/ui/console.c
>> @@ -449,7 +449,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);
>
> Hopefully s->width * s->total_height can't overflow.
Two billion is a helluva lot of character cells :)
>> @@ -3025,7 +3025,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);
>
> sizeof(uint8_t) == 1, according to POSIX. This could be further
> simplified to g_malloc0(VNC_STAT_COLS). But if someone wants to do that
> simplification, it should be a separate patch.
g_new0(uint8_t, VNC_STAT_COLS) returns uint8_t *.
g_malloc0(VNC_STAT_COLS) returns void *.
Transforming the former to the latter loses a bit of type checking.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-09-14 17:44 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-14 11:03 [Qemu-devel] [PATCH] ui: Use g_new() & friends where that makes obvious sense Markus Armbruster
2015-09-14 15:30 ` Eric Blake
2015-09-14 17:44 ` Markus Armbruster
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).