Hi, The diff below adds a patch by uwe@, taken from his git-cvs repo.
OK? Index: Makefile =================================================================== RCS file: /cvs/ports/devel/py-rcsparse/Makefile,v retrieving revision 1.11 diff -u -p -u -p -r1.11 Makefile --- Makefile 11 Mar 2013 10:50:26 -0000 1.11 +++ Makefile 15 May 2013 13:54:23 -0000 @@ -8,6 +8,7 @@ VERSION= 20090807 DISTNAME= ${CHANGESET} EXTRACT_SUFX= .tar.bz2 PKGNAME= rcsparse-${VERSION} +REVISION= 0 CATEGORIES= devel PERMIT_PACKAGE_CDROM= Yes Index: patches/patch-rcsparse_c =================================================================== RCS file: patches/patch-rcsparse_c diff -N patches/patch-rcsparse_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-rcsparse_c 15 May 2013 13:54:23 -0000 @@ -0,0 +1,61 @@ +$OpenBSD$ + +Free the fulltext of unmatched revisions while searching for the +requested revision to avoid exhausting all available memory during +the search. + +--- rcsparse.c.orig Fri Aug 7 00:21:50 2009 ++++ rcsparse.c Wed May 15 15:22:45 2013 +@@ -937,7 +937,7 @@ rcscheckout(struct rcsfile *rcs, const char *revstr, s + { + struct rcsrev searchrev; + struct rcstoken searchtok; +- struct rcsrev *currcsrev; ++ struct rcsrev *currcsrev, *curtextrev; + struct stringinfo *curtext; + struct rcstoken *nextrev; + char *branchrev, *tmpstr; +@@ -946,6 +946,7 @@ rcscheckout(struct rcsfile *rcs, const char *revstr, s + if (rcsparsetree(rcs) < 0) + return NULL; + ++ curtextrev = NULL; + curtext = NULL; + nextrev = NULL; + branchrev = NULL; +@@ -986,6 +987,7 @@ rcscheckout(struct rcsfile *rcs, const char *revstr, s + + if (curtext == NULL) { + curtext = currcsrev->rawtext; ++ curtextrev = currcsrev; + } else { + if (nextrev == NULL) + goto fail; +@@ -995,7 +997,12 @@ rcscheckout(struct rcsfile *rcs, const char *revstr, s + + if (currcsrev->text) { + /* Was expanded before */ ++ if (curtextrev != NULL) { ++ free(curtextrev->text); ++ curtextrev->text = NULL; ++ } + curtext = currcsrev->text; ++ curtextrev = currcsrev; + } else { + if (currcsrev->rawtext == NULL) + goto fail; +@@ -1004,9 +1011,12 @@ rcscheckout(struct rcsfile *rcs, const char *revstr, s + goto fail; + if (applydelta(&currcsrev->text, currcsrev->rawtext) < 0) + goto fail; +- free(currcsrev->rawtext); +- currcsrev->rawtext = NULL; ++ if (curtextrev != NULL) { ++ free(curtextrev->text); ++ curtextrev->text = NULL; ++ } + curtext = currcsrev->text; ++ curtextrev = currcsrev; + } + } +