diff --git a/server/mapping.c b/server/mapping.c index f9f50edfa60..d9bff4b2ead 100644 --- a/server/mapping.c +++ b/server/mapping.c @@ -507,13 +507,13 @@ static int build_shared_mapping( struct mapping *mapping, int fd, } if (pwrite( shared_fd, buffer, file_size, write_pos ) != file_size) goto error; } - free( buffer ); if (!(shared = alloc_object( &shared_map_ops ))) goto error; shared->fd = (struct fd *)grab_object( mapping->fd ); shared->file = file; list_add_head( &shared_map_list, &shared->entry ); mapping->shared = shared; + free( buffer ); return 1; error: