[Spice-devel] [PATCH 3/3] make allocation fixed instead of variable

Jonathon Jongsma jjongsma at redhat.com
Tue Feb 23 19:57:59 UTC 2016


I'm a bit ambivalent about this change. Although it may generate better code, I
think that it makes the code slightly more difficult to read. I'd almost prefer
a #define to the enum solution. But I guess I don't care too much.


On Tue, 2016-02-23 at 16:06 +0000, Frediano Ziglio wrote:
> Due to the way C handle constant variable the usage of these constant
> were used as variable making compiler generate something like alloca
> call while could compute allocation size statically.
> Fix this using enum.
> You can see the difference in the generated object file.
> 
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> ---
>  server/reds-stream.c | 2 +-
>  server/tree.c        | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/server/reds-stream.c b/server/reds-stream.c
> index 140b767..4930953 100644
> --- a/server/reds-stream.c
> +++ b/server/reds-stream.c
> @@ -261,7 +261,7 @@ int reds_stream_send_msgfd(RedsStream *stream, int fd)
>      struct iovec iov;
>      int r;
>  
> -    const size_t fd_size = 1 * sizeof(int);
> +    enum { fd_size = 1 * sizeof(int) };
>      struct cmsghdr *cmsg;
>      union {
>          struct cmsghdr hdr;
> diff --git a/server/tree.c b/server/tree.c
> index 9e5a281..41e78d2 100644
> --- a/server/tree.c
> +++ b/server/tree.c
> @@ -130,7 +130,7 @@ static void dump_item(TreeItem *item, void *data)
>      switch (item->type) {
>      case TREE_ITEM_TYPE_DRAWABLE: {
>          Drawable *drawable = SPICE_CONTAINEROF(item, Drawable,
> tree_item.base);
> -        const int max_indent = 200;
> +        enum { max_indent = 200 };
>          char indent_str[max_indent + 1];
>          int indent_str_len;
>  


More information about the Spice-devel mailing list