trivial patches for 2014-09-03
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iQEcBAABAgAGBQJUBqzmAAoJEL7lnXSkw9fbY54H/1fm0Qjpl0fltFC3xXeuLTKB FFuNMpNAupzeRvHbnrYXBeEGHEYS9KcF+sLnjxugE70XNMBmHPCeF8ZuLZtDa6ys Xdk3shsSIDg3mThV0L7oaHzaqogCftwlmOqko3HNMuDBurpVCUmzFjWT9dIlcbD6 SqTmuT2fsyyoh8HzmIfDlQWjRd0Ye5ZarEvrldkA+dpNma2ahDZE1eFFtPoUg/eC YihSqDz3WdKx/MPJiDMxTW1olz3oiSOTu8iQTp9Qd9p/Hdhv4CeFYHURyVbd74ka ciqPRf+oeIDSlBDxNGbzhZBzqmgBQ3Hmd4dtjacpCHRr7nTJLRfEHbpZvkUOz+Q= =PizL -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/mjt/tags/trivial-patches-2014-09-03' into staging trivial patches for 2014-09-03 # gpg: Signature made Wed 03 Sep 2014 06:53:42 BST using RSA key ID A4C3D7DB # gpg: Good signature from "Michael Tokarev <mjt@tls.msk.ru>" # gpg: aka "Michael Tokarev <mjt@corpit.ru>" # gpg: aka "Michael Tokarev <mjt@debian.org>" # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 6EE1 95D1 886E 8FFB 810D 4324 457C E0A0 8044 65C5 # Subkey fingerprint: 6F67 E18E 7C91 C5B1 5514 66A7 BEE5 9D74 A4C3 D7DB * remotes/mjt/tags/trivial-patches-2014-09-03: slirp: Honour vlan/stack in hostfwd_remove commands hmp: fix MemdevList memory leak qom/object.c, hmp.c: fix string_output_get_string() memory leak query-memdev: fix potential memory leaks MAINTAINERS: Add VMWare devices maintainer device_tree.c: dump all err mesages with error_report device_tree.c: redirect load_device_tree err message to stderr scripts: Remove scripts/qtest Fix debug print warning curl: The macro that you have to uncomment to get debugging is DEBUG_CURL. Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
		
						commit
						01eb313907
					
				@ -684,6 +684,12 @@ S: Maintained
 | 
			
		||||
F: hw/*/xilinx_*
 | 
			
		||||
F: include/hw/xilinx.h
 | 
			
		||||
 | 
			
		||||
Vmware
 | 
			
		||||
M: Dmitry Fleytman <dmitry@daynix.com>
 | 
			
		||||
S: Maintained
 | 
			
		||||
F: hw/net/vmxnet*
 | 
			
		||||
F: hw/scsi/vmw_pvscsi*
 | 
			
		||||
 | 
			
		||||
Subsystems
 | 
			
		||||
----------
 | 
			
		||||
Audio
 | 
			
		||||
 | 
			
		||||
@ -26,7 +26,7 @@
 | 
			
		||||
#include "qapi/qmp/qbool.h"
 | 
			
		||||
#include <curl/curl.h>
 | 
			
		||||
 | 
			
		||||
// #define DEBUG
 | 
			
		||||
// #define DEBUG_CURL
 | 
			
		||||
// #define DEBUG_VERBOSE
 | 
			
		||||
 | 
			
		||||
#ifdef DEBUG_CURL
 | 
			
		||||
 | 
			
		||||
@ -20,6 +20,7 @@
 | 
			
		||||
 | 
			
		||||
#include "config.h"
 | 
			
		||||
#include "qemu-common.h"
 | 
			
		||||
#include "qemu/error-report.h"
 | 
			
		||||
#include "sysemu/device_tree.h"
 | 
			
		||||
#include "sysemu/sysemu.h"
 | 
			
		||||
#include "hw/loader.h"
 | 
			
		||||
@ -59,13 +60,13 @@ void *create_device_tree(int *sizep)
 | 
			
		||||
    }
 | 
			
		||||
    ret = fdt_open_into(fdt, fdt, *sizep);
 | 
			
		||||
    if (ret) {
 | 
			
		||||
        fprintf(stderr, "Unable to copy device tree in memory\n");
 | 
			
		||||
        error_report("Unable to copy device tree in memory");
 | 
			
		||||
        exit(1);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return fdt;
 | 
			
		||||
fail:
 | 
			
		||||
    fprintf(stderr, "%s Couldn't create dt: %s\n", __func__, fdt_strerror(ret));
 | 
			
		||||
    error_report("%s Couldn't create dt: %s", __func__, fdt_strerror(ret));
 | 
			
		||||
    exit(1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -79,7 +80,7 @@ void *load_device_tree(const char *filename_path, int *sizep)
 | 
			
		||||
    *sizep = 0;
 | 
			
		||||
    dt_size = get_image_size(filename_path);
 | 
			
		||||
    if (dt_size < 0) {
 | 
			
		||||
        printf("Unable to get size of device tree file '%s'\n",
 | 
			
		||||
        error_report("Unable to get size of device tree file '%s'",
 | 
			
		||||
                     filename_path);
 | 
			
		||||
        goto fail;
 | 
			
		||||
    }
 | 
			
		||||
@ -92,20 +93,20 @@ void *load_device_tree(const char *filename_path, int *sizep)
 | 
			
		||||
 | 
			
		||||
    dt_file_load_size = load_image(filename_path, fdt);
 | 
			
		||||
    if (dt_file_load_size < 0) {
 | 
			
		||||
        printf("Unable to open device tree file '%s'\n",
 | 
			
		||||
        error_report("Unable to open device tree file '%s'",
 | 
			
		||||
                     filename_path);
 | 
			
		||||
        goto fail;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ret = fdt_open_into(fdt, fdt, dt_size);
 | 
			
		||||
    if (ret) {
 | 
			
		||||
        printf("Unable to copy device tree in memory\n");
 | 
			
		||||
        error_report("Unable to copy device tree in memory");
 | 
			
		||||
        goto fail;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* Check sanity of device tree */
 | 
			
		||||
    if (fdt_check_header(fdt)) {
 | 
			
		||||
        printf ("Device tree file loaded into memory is invalid: %s\n",
 | 
			
		||||
        error_report("Device tree file loaded into memory is invalid: %s",
 | 
			
		||||
                     filename_path);
 | 
			
		||||
        goto fail;
 | 
			
		||||
    }
 | 
			
		||||
@ -123,7 +124,7 @@ static int findnode_nofail(void *fdt, const char *node_path)
 | 
			
		||||
 | 
			
		||||
    offset = fdt_path_offset(fdt, node_path);
 | 
			
		||||
    if (offset < 0) {
 | 
			
		||||
        fprintf(stderr, "%s Couldn't find node %s: %s\n", __func__, node_path,
 | 
			
		||||
        error_report("%s Couldn't find node %s: %s", __func__, node_path,
 | 
			
		||||
                     fdt_strerror(offset));
 | 
			
		||||
        exit(1);
 | 
			
		||||
    }
 | 
			
		||||
@ -138,7 +139,7 @@ int qemu_fdt_setprop(void *fdt, const char *node_path,
 | 
			
		||||
 | 
			
		||||
    r = fdt_setprop(fdt, findnode_nofail(fdt, node_path), property, val, size);
 | 
			
		||||
    if (r < 0) {
 | 
			
		||||
        fprintf(stderr, "%s: Couldn't set %s/%s: %s\n", __func__, node_path,
 | 
			
		||||
        error_report("%s: Couldn't set %s/%s: %s", __func__, node_path,
 | 
			
		||||
                     property, fdt_strerror(r));
 | 
			
		||||
        exit(1);
 | 
			
		||||
    }
 | 
			
		||||
@ -153,7 +154,7 @@ int qemu_fdt_setprop_cell(void *fdt, const char *node_path,
 | 
			
		||||
 | 
			
		||||
    r = fdt_setprop_cell(fdt, findnode_nofail(fdt, node_path), property, val);
 | 
			
		||||
    if (r < 0) {
 | 
			
		||||
        fprintf(stderr, "%s: Couldn't set %s/%s = %#08x: %s\n", __func__,
 | 
			
		||||
        error_report("%s: Couldn't set %s/%s = %#08x: %s", __func__,
 | 
			
		||||
                     node_path, property, val, fdt_strerror(r));
 | 
			
		||||
        exit(1);
 | 
			
		||||
    }
 | 
			
		||||
@ -175,7 +176,7 @@ int qemu_fdt_setprop_string(void *fdt, const char *node_path,
 | 
			
		||||
 | 
			
		||||
    r = fdt_setprop_string(fdt, findnode_nofail(fdt, node_path), property, string);
 | 
			
		||||
    if (r < 0) {
 | 
			
		||||
        fprintf(stderr, "%s: Couldn't set %s/%s = %s: %s\n", __func__,
 | 
			
		||||
        error_report("%s: Couldn't set %s/%s = %s: %s", __func__,
 | 
			
		||||
                     node_path, property, string, fdt_strerror(r));
 | 
			
		||||
        exit(1);
 | 
			
		||||
    }
 | 
			
		||||
@ -193,7 +194,7 @@ const void *qemu_fdt_getprop(void *fdt, const char *node_path,
 | 
			
		||||
    }
 | 
			
		||||
    r = fdt_getprop(fdt, findnode_nofail(fdt, node_path), property, lenp);
 | 
			
		||||
    if (!r) {
 | 
			
		||||
        fprintf(stderr, "%s: Couldn't get %s/%s: %s\n", __func__,
 | 
			
		||||
        error_report("%s: Couldn't get %s/%s: %s", __func__,
 | 
			
		||||
                     node_path, property, fdt_strerror(*lenp));
 | 
			
		||||
        exit(1);
 | 
			
		||||
    }
 | 
			
		||||
@ -206,7 +207,7 @@ uint32_t qemu_fdt_getprop_cell(void *fdt, const char *node_path,
 | 
			
		||||
    int len;
 | 
			
		||||
    const uint32_t *p = qemu_fdt_getprop(fdt, node_path, property, &len);
 | 
			
		||||
    if (len != 4) {
 | 
			
		||||
        fprintf(stderr, "%s: %s/%s not 4 bytes long (not a cell?)\n",
 | 
			
		||||
        error_report("%s: %s/%s not 4 bytes long (not a cell?)",
 | 
			
		||||
                     __func__, node_path, property);
 | 
			
		||||
        exit(1);
 | 
			
		||||
    }
 | 
			
		||||
@ -219,7 +220,7 @@ uint32_t qemu_fdt_get_phandle(void *fdt, const char *path)
 | 
			
		||||
 | 
			
		||||
    r = fdt_get_phandle(fdt, findnode_nofail(fdt, path));
 | 
			
		||||
    if (r == 0) {
 | 
			
		||||
        fprintf(stderr, "%s: Couldn't get phandle for %s: %s\n", __func__,
 | 
			
		||||
        error_report("%s: Couldn't get phandle for %s: %s", __func__,
 | 
			
		||||
                     path, fdt_strerror(r));
 | 
			
		||||
        exit(1);
 | 
			
		||||
    }
 | 
			
		||||
@ -265,7 +266,7 @@ int qemu_fdt_nop_node(void *fdt, const char *node_path)
 | 
			
		||||
 | 
			
		||||
    r = fdt_nop_node(fdt, findnode_nofail(fdt, node_path));
 | 
			
		||||
    if (r < 0) {
 | 
			
		||||
        fprintf(stderr, "%s: Couldn't nop node %s: %s\n", __func__, node_path,
 | 
			
		||||
        error_report("%s: Couldn't nop node %s: %s", __func__, node_path,
 | 
			
		||||
                     fdt_strerror(r));
 | 
			
		||||
        exit(1);
 | 
			
		||||
    }
 | 
			
		||||
@ -294,7 +295,7 @@ int qemu_fdt_add_subnode(void *fdt, const char *name)
 | 
			
		||||
 | 
			
		||||
    retval = fdt_add_subnode(fdt, parent, basename);
 | 
			
		||||
    if (retval < 0) {
 | 
			
		||||
        fprintf(stderr, "FDT: Failed to create subnode %s: %s\n", name,
 | 
			
		||||
        error_report("FDT: Failed to create subnode %s: %s", name,
 | 
			
		||||
                     fdt_strerror(retval));
 | 
			
		||||
        exit(1);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										8
									
								
								hmp.c
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								hmp.c
									
									
									
									
									
								
							@ -1687,6 +1687,7 @@ void hmp_info_memdev(Monitor *mon, const QDict *qdict)
 | 
			
		||||
    MemdevList *memdev_list = qmp_query_memdev(&err);
 | 
			
		||||
    MemdevList *m = memdev_list;
 | 
			
		||||
    StringOutputVisitor *ov;
 | 
			
		||||
    char *str;
 | 
			
		||||
    int i = 0;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1704,13 +1705,16 @@ void hmp_info_memdev(Monitor *mon, const QDict *qdict)
 | 
			
		||||
                       m->value->prealloc ? "true" : "false");
 | 
			
		||||
        monitor_printf(mon, "  policy: %s\n",
 | 
			
		||||
                       HostMemPolicy_lookup[m->value->policy]);
 | 
			
		||||
        monitor_printf(mon, "  host nodes: %s\n",
 | 
			
		||||
                       string_output_get_string(ov));
 | 
			
		||||
        str = string_output_get_string(ov);
 | 
			
		||||
        monitor_printf(mon, "  host nodes: %s\n", str);
 | 
			
		||||
 | 
			
		||||
        g_free(str);
 | 
			
		||||
        string_output_visitor_cleanup(ov);
 | 
			
		||||
        m = m->next;
 | 
			
		||||
        i++;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    monitor_printf(mon, "\n");
 | 
			
		||||
 | 
			
		||||
    qapi_free_MemdevList(memdev_list);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -139,7 +139,8 @@ static void smb_ioport_writeb(void *opaque, hwaddr addr, uint64_t val,
 | 
			
		||||
{
 | 
			
		||||
    PMSMBus *s = opaque;
 | 
			
		||||
 | 
			
		||||
    SMBUS_DPRINTF("SMB writeb port=0x%04x val=0x%02x\n", addr, val);
 | 
			
		||||
    SMBUS_DPRINTF("SMB writeb port=0x%04" HWADDR_PRIx
 | 
			
		||||
                  " val=0x%02" PRIx64 "\n", addr, val);
 | 
			
		||||
    switch(addr) {
 | 
			
		||||
    case SMBHSTSTS:
 | 
			
		||||
        s->smb_stat = (~(val & 0xff)) & s->smb_stat;
 | 
			
		||||
@ -206,7 +207,7 @@ static uint64_t smb_ioport_readb(void *opaque, hwaddr addr, unsigned width)
 | 
			
		||||
        val = 0;
 | 
			
		||||
        break;
 | 
			
		||||
    }
 | 
			
		||||
    SMBUS_DPRINTF("SMB readb port=0x%04x val=0x%02x\n", addr, val);
 | 
			
		||||
    SMBUS_DPRINTF("SMB readb port=0x%04" HWADDR_PRIx " val=0x%02x\n", addr, val);
 | 
			
		||||
    return val;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -481,7 +481,7 @@ static void port92_write(void *opaque, hwaddr addr, uint64_t val,
 | 
			
		||||
    Port92State *s = opaque;
 | 
			
		||||
    int oldval = s->outport;
 | 
			
		||||
 | 
			
		||||
    DPRINTF("port92: write 0x%02x\n", val);
 | 
			
		||||
    DPRINTF("port92: write 0x%02" PRIx64 "\n", val);
 | 
			
		||||
    s->outport = val;
 | 
			
		||||
    qemu_set_irq(*s->a20_out, (val >> 1) & 1);
 | 
			
		||||
    if ((val & 1) && !(oldval & 1)) {
 | 
			
		||||
 | 
			
		||||
@ -229,7 +229,7 @@ static void kbd_write_command(void *opaque, hwaddr addr,
 | 
			
		||||
{
 | 
			
		||||
    KBDState *s = opaque;
 | 
			
		||||
 | 
			
		||||
    DPRINTF("kbd: write cmd=0x%02x\n", val);
 | 
			
		||||
    DPRINTF("kbd: write cmd=0x%02" PRIx64 "\n", val);
 | 
			
		||||
 | 
			
		||||
    /* Bits 3-0 of the output port P2 of the keyboard controller may be pulsed
 | 
			
		||||
     * low for approximately 6 micro seconds. Bits 3-0 of the KBD_CCMD_PULSE
 | 
			
		||||
@ -330,7 +330,7 @@ static void kbd_write_data(void *opaque, hwaddr addr,
 | 
			
		||||
{
 | 
			
		||||
    KBDState *s = opaque;
 | 
			
		||||
 | 
			
		||||
    DPRINTF("kbd: write data=0x%02x\n", val);
 | 
			
		||||
    DPRINTF("kbd: write data=0x%02" PRIx64 "\n", val);
 | 
			
		||||
 | 
			
		||||
    switch(s->write_cmd) {
 | 
			
		||||
    case 0:
 | 
			
		||||
 | 
			
		||||
@ -370,7 +370,7 @@ static uint64_t pic_ioport_read(void *opaque, hwaddr addr,
 | 
			
		||||
            ret = s->imr;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    DPRINTF("read: addr=0x%02x val=0x%02x\n", addr, ret);
 | 
			
		||||
    DPRINTF("read: addr=0x%02" HWADDR_PRIx " val=0x%02x\n", addr, ret);
 | 
			
		||||
    return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -41,7 +41,8 @@ static void apm_ioport_writeb(void *opaque, hwaddr addr, uint64_t val,
 | 
			
		||||
{
 | 
			
		||||
    APMState *apm = opaque;
 | 
			
		||||
    addr &= 1;
 | 
			
		||||
    APM_DPRINTF("apm_ioport_writeb addr=0x%x val=0x%02x\n", addr, val);
 | 
			
		||||
    APM_DPRINTF("apm_ioport_writeb addr=0x%" HWADDR_PRIx
 | 
			
		||||
                " val=0x%02" PRIx64 "\n", addr, val);
 | 
			
		||||
    if (addr == 0) {
 | 
			
		||||
        apm->apmc = val;
 | 
			
		||||
 | 
			
		||||
@ -64,7 +65,7 @@ static uint64_t apm_ioport_readb(void *opaque, hwaddr addr, unsigned size)
 | 
			
		||||
    } else {
 | 
			
		||||
        val = apm->apms;
 | 
			
		||||
    }
 | 
			
		||||
    APM_DPRINTF("apm_ioport_readb addr=0x%x val=0x%02x\n", addr, val);
 | 
			
		||||
    APM_DPRINTF("apm_ioport_readb addr=0x%" HWADDR_PRIx " val=0x%02x\n", addr, val);
 | 
			
		||||
    return val;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -391,7 +391,7 @@ static void cmos_ioport_write(void *opaque, hwaddr addr,
 | 
			
		||||
    if ((addr & 1) == 0) {
 | 
			
		||||
        s->cmos_index = data & 0x7f;
 | 
			
		||||
    } else {
 | 
			
		||||
        CMOS_DPRINTF("cmos: write index=0x%02x val=0x%02x\n",
 | 
			
		||||
        CMOS_DPRINTF("cmos: write index=0x%02x val=0x%02" PRIx64 "\n",
 | 
			
		||||
                     s->cmos_index, data);
 | 
			
		||||
        switch(s->cmos_index) {
 | 
			
		||||
        case RTC_SECONDS_ALARM:
 | 
			
		||||
 | 
			
		||||
@ -345,8 +345,7 @@ void net_slirp_hostfwd_remove(Monitor *mon, const QDict *qdict)
 | 
			
		||||
 | 
			
		||||
    host_port = atoi(p);
 | 
			
		||||
 | 
			
		||||
    err = slirp_remove_hostfwd(QTAILQ_FIRST(&slirp_stacks)->slirp, is_udp,
 | 
			
		||||
                               host_addr, host_port);
 | 
			
		||||
    err = slirp_remove_hostfwd(s->slirp, is_udp, host_addr, host_port);
 | 
			
		||||
 | 
			
		||||
    monitor_printf(mon, "host forwarding rule for %s %s\n", src_str,
 | 
			
		||||
                   err ? "not found" : "removed");
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										15
									
								
								numa.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								numa.c
									
									
									
									
									
								
							@ -318,10 +318,11 @@ void memory_region_allocate_system_memory(MemoryRegion *mr, Object *owner,
 | 
			
		||||
static int query_memdev(Object *obj, void *opaque)
 | 
			
		||||
{
 | 
			
		||||
    MemdevList **list = opaque;
 | 
			
		||||
    MemdevList *m = NULL;
 | 
			
		||||
    Error *err = NULL;
 | 
			
		||||
 | 
			
		||||
    if (object_dynamic_cast(obj, TYPE_MEMORY_BACKEND)) {
 | 
			
		||||
        MemdevList *m = g_malloc0(sizeof(*m));
 | 
			
		||||
        m = g_malloc0(sizeof(*m));
 | 
			
		||||
 | 
			
		||||
        m->value = g_malloc0(sizeof(*m->value));
 | 
			
		||||
 | 
			
		||||
@ -369,13 +370,16 @@ static int query_memdev(Object *obj, void *opaque)
 | 
			
		||||
 | 
			
		||||
    return 0;
 | 
			
		||||
error:
 | 
			
		||||
    g_free(m->value);
 | 
			
		||||
    g_free(m);
 | 
			
		||||
 | 
			
		||||
    return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
MemdevList *qmp_query_memdev(Error **errp)
 | 
			
		||||
{
 | 
			
		||||
    Object *obj;
 | 
			
		||||
    MemdevList *list = NULL, *m;
 | 
			
		||||
    MemdevList *list = NULL;
 | 
			
		||||
 | 
			
		||||
    obj = object_resolve_path("/objects", NULL);
 | 
			
		||||
    if (obj == NULL) {
 | 
			
		||||
@ -389,11 +393,6 @@ MemdevList *qmp_query_memdev(Error **errp)
 | 
			
		||||
    return list;
 | 
			
		||||
 | 
			
		||||
error:
 | 
			
		||||
    while (list) {
 | 
			
		||||
        m = list;
 | 
			
		||||
        list = list->next;
 | 
			
		||||
        g_free(m->value);
 | 
			
		||||
        g_free(m);
 | 
			
		||||
    }
 | 
			
		||||
    qapi_free_MemdevList(list);
 | 
			
		||||
    return NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										12
									
								
								qom/object.c
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								qom/object.c
									
									
									
									
									
								
							@ -938,14 +938,18 @@ int object_property_get_enum(Object *obj, const char *name,
 | 
			
		||||
{
 | 
			
		||||
    StringOutputVisitor *sov;
 | 
			
		||||
    StringInputVisitor *siv;
 | 
			
		||||
    char *str;
 | 
			
		||||
    int ret;
 | 
			
		||||
 | 
			
		||||
    sov = string_output_visitor_new(false);
 | 
			
		||||
    object_property_get(obj, string_output_get_visitor(sov), name, errp);
 | 
			
		||||
    siv = string_input_visitor_new(string_output_get_string(sov));
 | 
			
		||||
    str = string_output_get_string(sov);
 | 
			
		||||
    siv = string_input_visitor_new(str);
 | 
			
		||||
    string_output_visitor_cleanup(sov);
 | 
			
		||||
    visit_type_enum(string_input_get_visitor(siv),
 | 
			
		||||
                    &ret, strings, NULL, name, errp);
 | 
			
		||||
 | 
			
		||||
    g_free(str);
 | 
			
		||||
    string_input_visitor_cleanup(siv);
 | 
			
		||||
 | 
			
		||||
    return ret;
 | 
			
		||||
@ -956,13 +960,17 @@ void object_property_get_uint16List(Object *obj, const char *name,
 | 
			
		||||
{
 | 
			
		||||
    StringOutputVisitor *ov;
 | 
			
		||||
    StringInputVisitor *iv;
 | 
			
		||||
    char *str;
 | 
			
		||||
 | 
			
		||||
    ov = string_output_visitor_new(false);
 | 
			
		||||
    object_property_get(obj, string_output_get_visitor(ov),
 | 
			
		||||
                        name, errp);
 | 
			
		||||
    iv = string_input_visitor_new(string_output_get_string(ov));
 | 
			
		||||
    str = string_output_get_string(ov);
 | 
			
		||||
    iv = string_input_visitor_new(str);
 | 
			
		||||
    visit_type_uint16List(string_input_get_visitor(iv),
 | 
			
		||||
                          list, NULL, errp);
 | 
			
		||||
 | 
			
		||||
    g_free(str);
 | 
			
		||||
    string_output_visitor_cleanup(ov);
 | 
			
		||||
    string_input_visitor_cleanup(iv);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,5 +0,0 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
export QTEST_QEMU_BINARY=$1
 | 
			
		||||
shift
 | 
			
		||||
"$@"
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user