diff options
author | Alessio Treglia <quadrispro@ubuntu.com> | 2009-12-03 13:03:13 +0100 |
---|---|---|
committer | Alessio Treglia <quadrispro@ubuntu.com> | 2009-12-03 13:03:13 +0100 |
commit | 8b022ab680a3f5e374a44f2c05c1671cfb2bc799 (patch) | |
tree | af20b9a16eeca697a1d30a554d8d1b31ae9c1e4f /snd-marks.c | |
parent | 5cd66eecc95be11cacc5aaf4db8c67a499bb2d4d (diff) |
Imported Upstream version 11.1
Diffstat (limited to 'snd-marks.c')
-rw-r--r-- | snd-marks.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/snd-marks.c b/snd-marks.c index bcec2ec..a2b381f 100644 --- a/snd-marks.c +++ b/snd-marks.c @@ -2038,7 +2038,7 @@ static char *xen_mark_to_string(xen_mark *v) char *buf; if (v == NULL) return(NULL); buf = (char *)calloc(XEN_MARK_PRINT_BUFFER_SIZE, sizeof(char)); - sprintf(buf, "#<mark %d>", v->n); + snprintf(buf, XEN_MARK_PRINT_BUFFER_SIZE, "#<mark %d>", v->n); return(buf); } @@ -2103,13 +2103,26 @@ static bool s7_xen_mark_equalp(void *obj1, void *obj2) return((obj1 == obj2) || (((xen_mark *)obj1)->n == ((xen_mark *)obj2)->n)); } + + +static XEN s7_xen_mark_copy(s7_scheme *sc, s7_pointer obj) +{ + int id; + mark *m, *new_m; + chan_info *cps[1]; + id = xen_mark_to_int(obj); + m = find_mark_from_id(id, cps, AT_CURRENT_EDIT_POSITION); + new_m = add_mark(m->samp, m->name, cps[0]); + new_m->sync = m->sync; + return(new_xen_mark(new_m->id)); +} #endif static void init_xen_mark(void) { #if HAVE_S7 - xen_mark_tag = XEN_MAKE_OBJECT_TYPE("<mark>", print_xen_mark, free_xen_mark, s7_xen_mark_equalp, NULL, NULL, NULL, NULL, NULL, NULL); + xen_mark_tag = XEN_MAKE_OBJECT_TYPE("<mark>", print_xen_mark, free_xen_mark, s7_xen_mark_equalp, NULL, NULL, NULL, NULL, s7_xen_mark_copy, NULL); #else #if HAVE_RUBY xen_mark_tag = XEN_MAKE_OBJECT_TYPE("XenMark", sizeof(xen_mark)); |