Update to 0.3.1

This commit is contained in:
Daniel P. Berrange 2007-12-13 18:27:01 +00:00
parent 74c5d3e8c9
commit 02f70ce4a4
6 changed files with 7 additions and 130 deletions

View File

@ -1,3 +1,3 @@
*.src.rpm
.*.log
gtk-vnc-0.2.0.tar.gz
gtk-vnc-*.tar.gz

View File

@ -1,84 +0,0 @@
changeset: 76:949312711737
tag: tip
user: "Daniel P. Berrange <berrange@redhat.com>"
date: Thu Oct 04 21:45:15 2007 -0400
files: src/coroutine.c
description:
Fix to coroutine caller state management to avoid SEGV
diff -r ef58fe73ab0c -r 949312711737 src/coroutine.c
--- a/src/coroutine.c Thu Oct 04 10:30:40 2007 -0300
+++ b/src/coroutine.c Thu Oct 04 21:45:15 2007 -0400
@@ -11,6 +11,7 @@
#include <sys/types.h>
#include <sys/mman.h>
#include <stdio.h>
+#include <stdlib.h>
#include "coroutine.h"
int coroutine_release(struct coroutine *co)
@@ -57,25 +58,23 @@ int coroutine_init(struct coroutine *co)
}
#if 0
-static __thread struct coroutine system;
+static __thread struct coroutine leader;
static __thread struct coroutine *current;
#else
-static struct coroutine system;
+static struct coroutine leader;
static struct coroutine *current;
#endif
struct coroutine *coroutine_self(void)
{
if (current == NULL)
- current = &system;
+ current = &leader;
return current;
}
void *coroutine_swap(struct coroutine *from, struct coroutine *to, void *arg)
{
int ret;
-
- to->caller = from;
to->data = arg;
current = to;
ret = cc_swap(&from->cc, &to->cc);
@@ -83,7 +82,7 @@ void *coroutine_swap(struct coroutine *f
return from->data;
else if (ret == 1) {
coroutine_release(to);
- current = &system;
+ current = &leader;
to->exited = 1;
return to->data;
}
@@ -93,12 +92,23 @@ void *coroutine_swap(struct coroutine *f
void *yieldto(struct coroutine *to, void *arg)
{
+ if (to->caller) {
+ fprintf(stderr, "Co-routine is re-entering itself\n");
+ abort();
+ }
+ to->caller = coroutine_self();
return coroutine_swap(coroutine_self(), to, arg);
}
void *yield(void *arg)
{
- return yieldto(coroutine_self()->caller, arg);
+ struct coroutine *to = coroutine_self()->caller;
+ if (!to) {
+ fprintf(stderr, "Co-routine is yielding to no one\n");
+ abort();
+ }
+ coroutine_self()->caller = NULL;
+ return coroutine_swap(coroutine_self(), to, arg);
}
/*
* Local variables:

View File

@ -1,22 +0,0 @@
changeset: 78:8d1799e6a392
tag: tip
user: "Daniel P. Berrange <berrange@redhat.com>"
date: Wed Oct 10 16:38:16 2007 -0400
files: src/coroutine.c
description:
Clear coroutine caller when exiting coroutine
diff -r df7828ad6498 -r 8d1799e6a392 src/coroutine.c
--- a/src/coroutine.c Wed Oct 10 10:09:08 2007 -0300
+++ b/src/coroutine.c Wed Oct 10 16:38:16 2007 -0400
@@ -28,6 +28,8 @@ static int _coroutine_release(struct con
if (ret < 0)
return ret;
}
+
+ co->caller = NULL;
return munmap(cc->stack, cc->stack_size);
}

View File

@ -1,14 +0,0 @@
diff -rup gtk-vnc-0.2.0.orig/src/coroutine.c gtk-vnc-0.2.0.new/src/coroutine.c
--- gtk-vnc-0.2.0.orig/src/coroutine.c 2007-09-13 17:11:29.000000000 -0400
+++ gtk-vnc-0.2.0.new/src/coroutine.c 2007-09-26 15:48:23.000000000 -0400
@@ -44,8 +44,8 @@ int coroutine_init(struct coroutine *co)
co->cc.stack_size = co->stack_size;
co->cc.stack = mmap(0, co->stack_size,
- PROT_READ | PROT_WRITE | PROT_EXEC,
- MAP_SHARED | MAP_ANONYMOUS | MAP_GROWSDOWN,
+ PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_ANONYMOUS,
-1, 0);
if (co->cc.stack == MAP_FAILED)
return -1;

View File

@ -2,14 +2,11 @@
Summary: A GTK widget for VNC clients
Name: gtk-vnc
Version: 0.2.0
Release: 4%{?dist}
Version: 0.3.1
Release: 1%{?dist}
License: LGPLv2+
Group: Development/Libraries
Source: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz
Patch1: %{name}-%{version}-execmem.patch
Patch2: %{name}-%{version}-coroutine-caller.patch
Patch3: %{name}-%{version}-coroutine-cleanup.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
URL: http://gtk-vnc.sf.net/
BuildRequires: gtk2-devel pygtk2-devel python-devel gnutls-devel
@ -44,9 +41,6 @@ A module allowing use of the GTK-VNC widget from python
%prep
%setup -q
%patch1 -p1
%patch2 -p1
%patch3 -p1
%build
%configure
@ -86,6 +80,9 @@ rm -fr %{buildroot}
%{_libdir}/python*/site-packages/gtkvnc.so
%changelog
* Thu Dec 13 2007 Daniel P. Berrange <berrange@redhat.com> - 0.3.1-1.fc9
- Update to 0.3.1 release
* Thu Oct 10 2007 Daniel P. Berrange <berrange@redhat.com> - 0.2.0-4.fc8
- Fixed coroutine cleanup to avoid SEGV (rhbz #325731)

View File

@ -1 +1 @@
b1321a9e88e5309f09c4f727f5a367e6 gtk-vnc-0.2.0.tar.gz
00630dab5e6b0617e7baf320461d0127 gtk-vnc-0.3.1.tar.gz