diff --git a/gvfs-helper.c b/gvfs-helper.c index 9274824020cf7a..166898a86cef62 100644 --- a/gvfs-helper.c +++ b/gvfs-helper.c @@ -1662,6 +1662,7 @@ static void my_create_tempfile( struct strbuf buf = STRBUF_INIT; int len_tp; enum scld_error scld; + int retries; gh__response_status__zero(status); @@ -1710,7 +1711,15 @@ static void my_create_tempfile( goto cleanup; } + retries = 0; *t1 = create_tempfile(buf.buf); + while (!*t1 && retries < 5) { + retries++; + strbuf_setlen(&buf, len_tp); + strbuf_addf(&buf, "%s-%d.%s", basename.buf, retries, suffix1); + *t1 = create_tempfile(buf.buf); + } + if (!*t1) { strbuf_addf(&status->error_message, "could not create tempfile: '%s'", @@ -1732,6 +1741,13 @@ static void my_create_tempfile( strbuf_addf( &buf, "%s.%s", basename.buf, suffix2); *t2 = create_tempfile(buf.buf); + while (!*t2 && retries < 5) { + retries++; + strbuf_setlen(&buf, len_tp); + strbuf_addf(&buf, "%s-%d.%s", basename.buf, retries, suffix2); + *t2 = create_tempfile(buf.buf); + } + if (!*t2) { strbuf_addf(&status->error_message, "could not create tempfile: '%s'",