List for cgit developers and users
 help / color / mirror / Atom feed
* [PATCH 0/1] segfault in cgit
@ 2011-09-09  4:43 jamie.couture
  2011-09-09  4:43 ` [PATCH 1/1] move LCS table away from the stack jamie.couture
  0 siblings, 1 reply; 13+ messages in thread
From: jamie.couture @ 2011-09-09  4:43 UTC (permalink / raw)


From: Jamie Couture <jamie.couture at gmail.com>

I reproduced the problem reported by Arun Persaud on his version, 9900ac022,
and on 756e3ea6.  Based on the suggestions of others, here is a patch to help
avoid segfaults when calculating lcs when printing deferred changed lines.

Jamie Couture (1):
  move LCS table away from the stack

 cgit.h      |   12 ++++++++++++
 ui-ssdiff.c |   32 ++++++++++++++++++++++++++++++--
 2 files changed, 42 insertions(+), 2 deletions(-)

-- 
1.7.6





^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 1/1] move LCS table away from the stack
  2011-09-09  4:43 [PATCH 0/1] segfault in cgit jamie.couture
@ 2011-09-09  4:43 ` jamie.couture
  2011-09-11  0:44   ` jamie.couture
  0 siblings, 1 reply; 13+ messages in thread
From: jamie.couture @ 2011-09-09  4:43 UTC (permalink / raw)


From: Jamie Couture <jamie.couture at gmail.com>

Minified files such as javascript, or something similar, where very long
single lines to compare when printing deferred line changes would have
caused segfaults.

Signed-off-by: Jamie Couture <jamie.couture at gmail.com>
---
 cgit.h      |   12 ++++++++++++
 ui-ssdiff.c |   32 ++++++++++++++++++++++++++++++--
 2 files changed, 42 insertions(+), 2 deletions(-)

diff --git a/cgit.h b/cgit.h
index bad66f0..1ff5cb3 100644
--- a/cgit.h
+++ b/cgit.h
@@ -47,6 +47,18 @@
  */
 #define PAGE_ENCODING "UTF-8"
 
+/*
+ * ssdiff line limits
+ */
+#ifndef MAX_SSDIFF_M
+#define MAX_SSDIFF_M 1024
+#endif
+
+#ifndef MAX_SSDIFF_N
+#define MAX_SSDIFF_N 1024
+#endif
+#define MAX_SSDIFF_SIZE ((MAX_SSDIFF_M) * (MAX_SSDIFF_N))
+
 typedef void (*configfn)(const char *name, const char *value);
 typedef void (*filepair_fn)(struct diff_filepair *pair);
 typedef void (*linediff_fn)(char *line, int len);
diff --git a/ui-ssdiff.c b/ui-ssdiff.c
index 2481585..4df01ed 100644
--- a/ui-ssdiff.c
+++ b/ui-ssdiff.c
@@ -16,16 +16,41 @@ struct deferred_lines {
 static struct deferred_lines *deferred_old, *deferred_old_last;
 static struct deferred_lines *deferred_new, *deferred_new_last;
 
+static int **create_lcs_table(size_t m, size_t n)
+{
+	int **L;
+	int i;
+
+	// xcalloc will die if we ran out of memory;
+	// not very helpful for debugging
+	L = (int**)xcalloc(m, sizeof(int *));
+	*L = (int*)xcalloc(m * n, sizeof(int));
+
+	for (i = 1; i < m; i++) {
+		L[i] = *L + i * n;
+	}
+
+	return L;
+}
+
 static char *longest_common_subsequence(char *A, char *B)
 {
 	int i, j, ri;
 	int m = strlen(A);
 	int n = strlen(B);
-	int L[m + 1][n + 1];
-	int tmp1, tmp2;
+	int **L;
+	int tmp1, tmp2, length;
 	int lcs_length;
 	char *result;
 
+	length = (m + 1) * (n + 1);
+
+	// We bail if the lines are too long
+	if (length > MAX_SSDIFF_SIZE)
+		return NULL;
+
+	L = create_lcs_table(m + 1, n + 1);
+
 	for (i = m; i >= 0; i--) {
 		for (j = n; j >= 0; j--) {
 			if (A[i] == '\0' || B[j] == '\0') {
@@ -59,6 +84,9 @@ static char *longest_common_subsequence(char *A, char *B)
 			j += 1;
 		}
 	}
+
+	free(*L);
+	free(L);
 	return result;
 }
 
-- 
1.7.6





^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 1/1] move LCS table away from the stack
  2011-09-09  4:43 ` [PATCH 1/1] move LCS table away from the stack jamie.couture
@ 2011-09-11  0:44   ` jamie.couture
  2011-09-11  0:44     ` [PATCH] " jamie.couture
  0 siblings, 1 reply; 13+ messages in thread
From: jamie.couture @ 2011-09-11  0:44 UTC (permalink / raw)


resubmitting patch due to terrible grammar in commit message.





^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH] move LCS table away from the stack
  2011-09-11  0:44   ` jamie.couture
@ 2011-09-11  0:44     ` jamie.couture
  2011-09-14  6:38       ` hjemli
  0 siblings, 1 reply; 13+ messages in thread
From: jamie.couture @ 2011-09-11  0:44 UTC (permalink / raw)


Printing deferred line changes for files containing long lines would
cause a segfault.  Set limitations and move lookup table out of the
stack.

Signed-off-by: Jamie Couture <jamie.couture at gmail.com>
---
 cgit.h      |   12 ++++++++++++
 ui-ssdiff.c |   32 ++++++++++++++++++++++++++++++--
 2 files changed, 42 insertions(+), 2 deletions(-)

diff --git a/cgit.h b/cgit.h
index bad66f0..1ff5cb3 100644
--- a/cgit.h
+++ b/cgit.h
@@ -47,6 +47,18 @@
  */
 #define PAGE_ENCODING "UTF-8"
 
+/*
+ * ssdiff line limits
+ */
+#ifndef MAX_SSDIFF_M
+#define MAX_SSDIFF_M 1024
+#endif
+
+#ifndef MAX_SSDIFF_N
+#define MAX_SSDIFF_N 1024
+#endif
+#define MAX_SSDIFF_SIZE ((MAX_SSDIFF_M) * (MAX_SSDIFF_N))
+
 typedef void (*configfn)(const char *name, const char *value);
 typedef void (*filepair_fn)(struct diff_filepair *pair);
 typedef void (*linediff_fn)(char *line, int len);
diff --git a/ui-ssdiff.c b/ui-ssdiff.c
index 2481585..4df01ed 100644
--- a/ui-ssdiff.c
+++ b/ui-ssdiff.c
@@ -16,16 +16,41 @@ struct deferred_lines {
 static struct deferred_lines *deferred_old, *deferred_old_last;
 static struct deferred_lines *deferred_new, *deferred_new_last;
 
+static int **create_lcs_table(size_t m, size_t n)
+{
+	int **L;
+	int i;
+
+	// xcalloc will die if we ran out of memory;
+	// not very helpful for debugging
+	L = (int**)xcalloc(m, sizeof(int *));
+	*L = (int*)xcalloc(m * n, sizeof(int));
+
+	for (i = 1; i < m; i++) {
+		L[i] = *L + i * n;
+	}
+
+	return L;
+}
+
 static char *longest_common_subsequence(char *A, char *B)
 {
 	int i, j, ri;
 	int m = strlen(A);
 	int n = strlen(B);
-	int L[m + 1][n + 1];
-	int tmp1, tmp2;
+	int **L;
+	int tmp1, tmp2, length;
 	int lcs_length;
 	char *result;
 
+	length = (m + 1) * (n + 1);
+
+	// We bail if the lines are too long
+	if (length > MAX_SSDIFF_SIZE)
+		return NULL;
+
+	L = create_lcs_table(m + 1, n + 1);
+
 	for (i = m; i >= 0; i--) {
 		for (j = n; j >= 0; j--) {
 			if (A[i] == '\0' || B[j] == '\0') {
@@ -59,6 +84,9 @@ static char *longest_common_subsequence(char *A, char *B)
 			j += 1;
 		}
 	}
+
+	free(*L);
+	free(L);
 	return result;
 }
 
-- 
1.7.6





^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH] move LCS table away from the stack
  2011-09-11  0:44     ` [PATCH] " jamie.couture
@ 2011-09-14  6:38       ` hjemli
  2011-09-17 22:25         ` [PATCH 1/1] " jamie.couture
  0 siblings, 1 reply; 13+ messages in thread
From: hjemli @ 2011-09-14  6:38 UTC (permalink / raw)


On Sun, Sep 11, 2011 at 02:44, Jamie Couture <jamie.couture at gmail.com> wrote:
> +/*
> + * ssdiff line limits
> + */
> +#ifndef MAX_SSDIFF_M
> +#define MAX_SSDIFF_M 1024
> +#endif
> +
> +#ifndef MAX_SSDIFF_N
> +#define MAX_SSDIFF_N 1024
> +#endif
> +#define MAX_SSDIFF_SIZE ((MAX_SSDIFF_M) * (MAX_SSDIFF_N))

I think this limit should be more like 128*128 for a few reasons:
* ss-diff for lines longer than 128 chars probably isn't very useful
(you'd need a very wide monitor)
* cpu time spent in LCS() seems to be propotional to avg(linelength)^2


> ?static char *longest_common_subsequence(char *A, char *B)
> ?{
> ? ? ? ?int i, j, ri;
> ? ? ? ?int m = strlen(A);
> ? ? ? ?int n = strlen(B);
> - ? ? ? int L[m + 1][n + 1];
> - ? ? ? int tmp1, tmp2;
> + ? ? ? int **L;
> + ? ? ? int tmp1, tmp2, length;
> ? ? ? ?int lcs_length;
> ? ? ? ?char *result;
>
> + ? ? ? length = (m + 1) * (n + 1);
> +
> + ? ? ? // We bail if the lines are too long
> + ? ? ? if (length > MAX_SSDIFF_SIZE)
> + ? ? ? ? ? ? ? return NULL;
> +
> + ? ? ? L = create_lcs_table(m + 1, n + 1);
> +
> ? ? ? ?for (i = m; i >= 0; i--) {
> ? ? ? ? ? ? ? ?for (j = n; j >= 0; j--) {
> ? ? ? ? ? ? ? ? ? ? ? ?if (A[i] == '\0' || B[j] == '\0') {
> @@ -59,6 +84,9 @@ static char *longest_common_subsequence(char *A, char *B)
> ? ? ? ? ? ? ? ? ? ? ? ?j += 1;
> ? ? ? ? ? ? ? ?}
> ? ? ? ?}
> +
> + ? ? ? free(*L);
> + ? ? ? free(L);
> ? ? ? ?return result;
> ?}

This function is potentially invoked for each diff-line, right? If so,
why not prepare a "shared" lcs-table in the caller (expecting
worst-case linelength) to avoid the setup/teardown of the table for
each line?

--
larsh




^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 1/1] move LCS table away from the stack
  2011-09-14  6:38       ` hjemli
@ 2011-09-17 22:25         ` jamie.couture
  2012-01-03 15:12           ` hjemli
  0 siblings, 1 reply; 13+ messages in thread
From: jamie.couture @ 2011-09-17 22:25 UTC (permalink / raw)


From: Jamie Couture <jamie.couture at gmail.com>

Printing deferred line changes for files containing long lines would
cause a segfault.

- limit LCS table size: 128x128.
- move LCS table to global context: avoid allocating/freeing memory
  for every deferred line change.

Signed-off-by: Jamie Couture <jamie.couture at gmail.com>
---
 ui-ssdiff.c |   33 +++++++++++++++++++++++++++++++--
 ui-ssdiff.h |   12 ++++++++++++
 2 files changed, 43 insertions(+), 2 deletions(-)

diff --git a/ui-ssdiff.c b/ui-ssdiff.c
index 2481585..9fb5b11 100644
--- a/ui-ssdiff.c
+++ b/ui-ssdiff.c
@@ -2,10 +2,12 @@
 #include "html.h"
 #include "ui-shared.h"
 #include "ui-diff.h"
+#include "ui-ssdiff.h"
 
 extern int use_ssdiff;
 
 static int current_old_line, current_new_line;
+static int **L = NULL;
 
 struct deferred_lines {
 	int line_no;
@@ -16,16 +18,42 @@ struct deferred_lines {
 static struct deferred_lines *deferred_old, *deferred_old_last;
 static struct deferred_lines *deferred_new, *deferred_new_last;
 
+static void create_or_reset_lcs_table()
+{
+	int i;
+
+	if (L != NULL) {
+		memset(*L, 0, sizeof(*L) * MAX_SSDIFF_SIZE);
+		return;
+	}
+
+	// xcalloc will die if we ran out of memory;
+	// not very helpful for debugging
+	L = (int**)xcalloc(MAX_SSDIFF_M, sizeof(int *));
+	*L = (int*)xcalloc(MAX_SSDIFF_SIZE, sizeof(int));
+
+	for (i = 1; i < MAX_SSDIFF_M; i++) {
+		L[i] = *L + i * MAX_SSDIFF_N;
+	}
+}
+
 static char *longest_common_subsequence(char *A, char *B)
 {
 	int i, j, ri;
 	int m = strlen(A);
 	int n = strlen(B);
-	int L[m + 1][n + 1];
-	int tmp1, tmp2;
+	int tmp1, tmp2, length;
 	int lcs_length;
 	char *result;
 
+	length = (m + 1) * (n + 1);
+
+	// We bail if the lines are too long
+	if (length > MAX_SSDIFF_SIZE)
+		return NULL;
+
+	create_or_reset_lcs_table();
+
 	for (i = m; i >= 0; i--) {
 		for (j = n; j >= 0; j--) {
 			if (A[i] == '\0' || B[j] == '\0') {
@@ -59,6 +87,7 @@ static char *longest_common_subsequence(char *A, char *B)
 			j += 1;
 		}
 	}
+
 	return result;
 }
 
diff --git a/ui-ssdiff.h b/ui-ssdiff.h
index 64b4b12..88627e2 100644
--- a/ui-ssdiff.h
+++ b/ui-ssdiff.h
@@ -1,6 +1,18 @@
 #ifndef UI_SSDIFF_H
 #define UI_SSDIFF_H
 
+/*
+ * ssdiff line limits
+ */
+#ifndef MAX_SSDIFF_M
+#define MAX_SSDIFF_M 128
+#endif
+
+#ifndef MAX_SSDIFF_N
+#define MAX_SSDIFF_N 128
+#endif
+#define MAX_SSDIFF_SIZE ((MAX_SSDIFF_M) * (MAX_SSDIFF_N))
+
 extern void cgit_ssdiff_print_deferred_lines();
 
 extern void cgit_ssdiff_line_cb(char *line, int len);
-- 
1.7.6





^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 1/1] move LCS table away from the stack
  2011-09-17 22:25         ` [PATCH 1/1] " jamie.couture
@ 2012-01-03 15:12           ` hjemli
  2012-01-04  8:59             ` normalperson
  0 siblings, 1 reply; 13+ messages in thread
From: hjemli @ 2012-01-03 15:12 UTC (permalink / raw)


On Sun, Sep 18, 2011 at 00:25, Jamie Couture <jamie.couture at gmail.com> wrote:
> - limit LCS table size: 128x128.
> - move LCS table to global context: avoid allocating/freeing memory
> ?for every deferred line change.

Thanks, finally applied (to stable).

--
larsh




^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 1/1] move LCS table away from the stack
  2012-01-03 15:12           ` hjemli
@ 2012-01-04  8:59             ` normalperson
  2012-01-04 16:57               ` jamie.couture
  2012-01-12  3:38               ` jamie.couture
  0 siblings, 2 replies; 13+ messages in thread
From: normalperson @ 2012-01-04  8:59 UTC (permalink / raw)


Lars Hjemli <hjemli at gmail.com> wrote:
> On Sun, Sep 18, 2011 at 00:25, Jamie Couture <jamie.couture at gmail.com> wrote:
> > - limit LCS table size: 128x128.
> > - move LCS table to global context: avoid allocating/freeing memory
> > ?for every deferred line change.
> 
> Thanks, finally applied (to stable).

Hi, I got new segfaults with this patch, the following should
fix them.

From 2d9ae9c3369d537259822a6dd64a13963cc4fdbf Mon Sep 17 00:00:00 2001
From: Eric Wong <normalperson at yhbt.net>
Date: Wed, 04 Jan 2012 08:57:43 +0000
Subject: [PATCH 2/2] correct length check for LCS table

Each individual string may be too long for its respective
dimension of the LCS table.

Signed-off-by: Eric Wong <normalperson at yhbt.net>
---
 ui-ssdiff.c |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/ui-ssdiff.c b/ui-ssdiff.c
index 9fb5b11..45770b1 100644
--- a/ui-ssdiff.c
+++ b/ui-ssdiff.c
@@ -42,14 +42,12 @@ static char *longest_common_subsequence(char *A, char *B)
 	int i, j, ri;
 	int m = strlen(A);
 	int n = strlen(B);
-	int tmp1, tmp2, length;
+	int tmp1, tmp2;
 	int lcs_length;
 	char *result;
 
-	length = (m + 1) * (n + 1);
-
 	// We bail if the lines are too long
-	if (length > MAX_SSDIFF_SIZE)
+	if (m >= MAX_SSDIFF_M || n >= MAX_SSDIFF_N)
 		return NULL;
 
 	create_or_reset_lcs_table();
-- 
Eric Wong




^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 1/1] move LCS table away from the stack
  2012-01-04  8:59             ` normalperson
@ 2012-01-04 16:57               ` jamie.couture
  2012-01-12  3:38               ` jamie.couture
  1 sibling, 0 replies; 13+ messages in thread
From: jamie.couture @ 2012-01-04 16:57 UTC (permalink / raw)


On Wed, Jan 4, 2012 at 3:59 AM, Eric Wong <normalperson at yhbt.net> wrote:

> Lars Hjemli <hjemli at gmail.com> wrote:
> > On Sun, Sep 18, 2011 at 00:25, Jamie Couture <jamie.couture at gmail.com>
> wrote:
> > > - limit LCS table size: 128x128.
> > > - move LCS table to global context: avoid allocating/freeing memory
> > >  for every deferred line change.
> >
> > Thanks, finally applied (to stable).
>
> Hi, I got new segfaults with this patch, the following should
> fix them.
>
> From 2d9ae9c3369d537259822a6dd64a13963cc4fdbf Mon Sep 17 00:00:00 2001
> From: Eric Wong <normalperson at yhbt.net>
> Date: Wed, 04 Jan 2012 08:57:43 +0000
> Subject: [PATCH 2/2] correct length check for LCS table
>
> Each individual string may be too long for its respective
> dimension of the LCS table.
>
> Signed-off-by: Eric Wong <normalperson at yhbt.net>
> ---
>  ui-ssdiff.c |    6 ++----
>  1 files changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/ui-ssdiff.c b/ui-ssdiff.c
> index 9fb5b11..45770b1 100644
> --- a/ui-ssdiff.c
> +++ b/ui-ssdiff.c
> @@ -42,14 +42,12 @@ static char *longest_common_subsequence(char *A, char
> *B)
>         int i, j, ri;
>        int m = strlen(A);
>        int n = strlen(B);
> -       int tmp1, tmp2, length;
> +       int tmp1, tmp2;
>         int lcs_length;
>        char *result;
>
> -       length = (m + 1) * (n + 1);
> -
>         // We bail if the lines are too long
> -       if (length > MAX_SSDIFF_SIZE)
> +       if (m >= MAX_SSDIFF_M || n >= MAX_SSDIFF_N)
>                return NULL;
>
>        create_or_reset_lcs_table();
> --
> Eric Wong
>

Tested and confirmed segfault fix

Thanks, Eric



^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 1/1] move LCS table away from the stack
  2012-01-04  8:59             ` normalperson
  2012-01-04 16:57               ` jamie.couture
@ 2012-01-12  3:38               ` jamie.couture
  2012-01-12  3:38                 ` [PATCH 1/2] correct length check for LCS table jamie.couture
  2012-01-12  3:38                 ` [PATCH 2/2] use correct type for sizeof jamie.couture
  1 sibling, 2 replies; 13+ messages in thread
From: jamie.couture @ 2012-01-12  3:38 UTC (permalink / raw)


Tested the following patches on Ubuntu 10.10, CentOS 6, RedHat 6





^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 1/2] correct length check for LCS table
  2012-01-12  3:38               ` jamie.couture
@ 2012-01-12  3:38                 ` jamie.couture
  2012-01-12  3:38                 ` [PATCH 2/2] use correct type for sizeof jamie.couture
  1 sibling, 0 replies; 13+ messages in thread
From: jamie.couture @ 2012-01-12  3:38 UTC (permalink / raw)


From: Eric Wong <normalperson at yhbt.net>

Each individual string may be too long for its respective
dimension of the LCS table.

Signed-off-by: Eric Wong <normalperson at yhbt.net>
Signed-off-by: Jamie Couture <jamie.couture at gmail.com>
---
 ui-ssdiff.c |    6 ++----
 1 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/ui-ssdiff.c b/ui-ssdiff.c
index 9fb5b11..45770b1 100644
--- a/ui-ssdiff.c
+++ b/ui-ssdiff.c
@@ -42,14 +42,12 @@ static char *longest_common_subsequence(char *A, char *B)
 	int i, j, ri;
 	int m = strlen(A);
 	int n = strlen(B);
-	int tmp1, tmp2, length;
+	int tmp1, tmp2;
 	int lcs_length;
 	char *result;
 
-	length = (m + 1) * (n + 1);
-
 	// We bail if the lines are too long
-	if (length > MAX_SSDIFF_SIZE)
+	if (m >= MAX_SSDIFF_M || n >= MAX_SSDIFF_N)
 		return NULL;
 
 	create_or_reset_lcs_table();
-- 
1.7.7.4





^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 2/2] use correct type for sizeof
  2012-01-12  3:38               ` jamie.couture
  2012-01-12  3:38                 ` [PATCH 1/2] correct length check for LCS table jamie.couture
@ 2012-01-12  3:38                 ` jamie.couture
  2012-03-18  9:22                   ` hjemli
  1 sibling, 1 reply; 13+ messages in thread
From: jamie.couture @ 2012-01-12  3:38 UTC (permalink / raw)


**L would have worked well too.  Depending on the distribution sizeof *L
may return 8 instead of 4. **L is preferable, but since we don't expect
this datatype to change very often, sizeof int is less subtle and easier
to understand.

Signed-off-by: Jamie Couture <jamie.couture at gmail.com>
---
 ui-ssdiff.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/ui-ssdiff.c b/ui-ssdiff.c
index 45770b1..0cff4b8 100644
--- a/ui-ssdiff.c
+++ b/ui-ssdiff.c
@@ -23,7 +23,7 @@ static void create_or_reset_lcs_table()
 	int i;
 
 	if (L != NULL) {
-		memset(*L, 0, sizeof(*L) * MAX_SSDIFF_SIZE);
+		memset(*L, 0, sizeof(int) * MAX_SSDIFF_SIZE);
 		return;
 	}
 
-- 
1.7.7.4





^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH 2/2] use correct type for sizeof
  2012-01-12  3:38                 ` [PATCH 2/2] use correct type for sizeof jamie.couture
@ 2012-03-18  9:22                   ` hjemli
  0 siblings, 0 replies; 13+ messages in thread
From: hjemli @ 2012-03-18  9:22 UTC (permalink / raw)


On Thu, Jan 12, 2012 at 04:38, Jamie Couture <jamie.couture at gmail.com> wrote:
> **L would have worked well too. ?Depending on the distribution sizeof *L
> may return 8 instead of 4. **L is preferable, but since we don't expect
> this datatype to change very often, sizeof int is less subtle and easier
> to understand.

Finally applied to stable

--
larsh




^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2012-03-18  9:22 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-09-09  4:43 [PATCH 0/1] segfault in cgit jamie.couture
2011-09-09  4:43 ` [PATCH 1/1] move LCS table away from the stack jamie.couture
2011-09-11  0:44   ` jamie.couture
2011-09-11  0:44     ` [PATCH] " jamie.couture
2011-09-14  6:38       ` hjemli
2011-09-17 22:25         ` [PATCH 1/1] " jamie.couture
2012-01-03 15:12           ` hjemli
2012-01-04  8:59             ` normalperson
2012-01-04 16:57               ` jamie.couture
2012-01-12  3:38               ` jamie.couture
2012-01-12  3:38                 ` [PATCH 1/2] correct length check for LCS table jamie.couture
2012-01-12  3:38                 ` [PATCH 2/2] use correct type for sizeof jamie.couture
2012-03-18  9:22                   ` hjemli

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).