+++ /dev/null
-From 6e85fad37a9d40cb02a71196fe5e6981cf255d6e Mon Sep 17 00:00:00 2001
-From: Sebastien Bourdeauducq <sebastien@milkymist.org>
-Date: Thu, 8 Mar 2012 17:13:32 +0100
-Subject: [PATCH] Copy vector values in vpi_put_value.
-
-Like it's done for strings.
----
- vvp/vpi_priv.cc | 22 ++++++++++++++++++++--
- 1 files changed, 20 insertions(+), 2 deletions(-)
-
-diff --git a/vvp/vpi_priv.cc b/vvp/vpi_priv.cc
-index 0d82b55..be04b31 100644
---- a/vvp/vpi_priv.cc
-+++ b/vvp/vpi_priv.cc
-@@ -948,15 +948,31 @@ void vpip_put_value_event::run_run()
- case vpiStringVal:
- free(value.value.str);
- break;
-+ case vpiVectorVal:
-+ free(value.value.vector);
-+ break;
- /* If these are ever copied then free them too. */
- case vpiTimeVal:
-- case vpiVectorVal:
- case vpiStrengthVal:
- default:
- break;
- }
- }
-
-+static t_vpi_vecval *copy_vector_for(vpiHandle obj, t_vpi_vecval *source)
-+{
-+ int size;
-+ int nbytes;
-+ t_vpi_vecval *r;
-+
-+ size = vpi_get(vpiSize, obj);
-+ nbytes = ((size + 31)/32)*sizeof(t_vpi_vecval);
-+ r = (t_vpi_vecval *)malloc(nbytes);
-+ assert(r);
-+ memcpy(r, source, nbytes);
-+ return r;
-+}
-+
- vpiHandle vpi_put_value(vpiHandle obj, s_vpi_value*vp,
- s_vpi_time*when, PLI_INT32 flags)
- {
-@@ -1008,9 +1024,11 @@ vpiHandle vpi_put_value(vpiHandle obj, s_vpi_value*vp,
- case vpiStringVal:
- put->value.value.str = strdup(put->value.value.str);
- break;
-+ case vpiVectorVal:
-+ put->value.value.vector = copy_vector_for(obj, put->value.value.vector);
-+ break;
- /* Do these also need to be copied? */
- case vpiTimeVal:
-- case vpiVectorVal:
- case vpiStrengthVal:
- default:
- break;
---
-1.7.7.6
-