diff --git a/lib/whimsy/asf/svn.rb b/lib/whimsy/asf/svn.rb
index 78137ae..65c3ff7 100644
--- a/lib/whimsy/asf/svn.rb
+++ b/lib/whimsy/asf/svn.rb
@@ -787,7 +787,7 @@
     # Parameters:
     #  directory - parent directory as an SVN URL
     #  filename - name of file to create
-    #  source - file to upload
+    #  text - text of file to create
     #  msg - commit message
     #  env - user/pass
     #  _ - wunderbar context
@@ -798,21 +798,27 @@
     # 0 on success
     # 1 if the file exists
     # IOError on unexpected error
-    def self.create_(directory, filename, source, msg, env, _, options={})
+    def self.create_(directory, filename, text, msg, env, _, options={})
       parentrev, err = self.getInfoItem(directory, 'revision', env.user, env.password)
       unless parentrev
         throw RuntimeError.new("Failed to get revision for #{directory}: #{err}")
       end
       target = File.join(directory, filename)
       return 1 if self.exist?(target, parentrev, env, options)
-      commands = [['put', source, target]]
-      # Detect file created in parallel. This generates the error message:
-      # svnmucc: E160020: File already exists: <snip> path 'xxx'
-      rc = self.svnmucc_(commands, msg, env, _, parentrev, options)
-      unless rc == 0
-        error = _.target?['transcript'][1] rescue ''
-        unless error =~ %r{^svnmucc: E160020: File already exists:}
-          throw RuntimeError.new("Unexpected error creating file: #{error}")
+      rc = nil
+      Dir.mktmpdir do |tmpdir|
+        require 'tempfile'
+        source = Tempfile.new('create_source', tmpdir)
+        File.write(source, text)
+        commands = [['put', source.path, target]]
+        # Detect file created in parallel. This generates the error message:
+        # svnmucc: E160020: File already exists: <snip> path 'xxx'
+        rc = self.svnmucc_(commands, msg, env, _, parentrev, options.merge({tmpdir: tmpdir}))
+        unless rc == 0
+          error = _.target?['transcript'][1] rescue ''
+          unless error =~ %r{^svnmucc: E160020: File already exists:}
+            throw RuntimeError.new("Unexpected error creating file: #{error}")
+          end
         end
       end
       rc
diff --git a/www/roster/views/actions/memstat.json.rb b/www/roster/views/actions/memstat.json.rb
index fa129d1..02dfcba 100644
--- a/www/roster/views/actions/memstat.json.rb
+++ b/www/roster/views/actions/memstat.json.rb
@@ -85,25 +85,21 @@
           ('Date: _______' + centered_date)).untaint
   # Write the emeritus request to emeritus-requests-received
   EMERITUS_REQUEST_URL = ASF::SVN.svnpath!('emeritus-requests-received').untaint
-  Dir.mktmpdir do |tmpdir|
-    filename =File.join(tmpdir,'tmpfile')
-    File.write(filename, signed_request)
-    rc = ASF::SVN.create_(EMERITUS_REQUEST_URL, "#{USERID}.txt", filename, "Emeritus request from #{USERNAME} (#{USERID})", env, _)
-    if rc == 0
-      ASF::Mail.configure
-      mail = Mail.new do
-        from "secretary@apache.org"
-        to "#{USERNAME}<#{USERMAIL}>"
-        subject "Acknowledgement of emeritus request from #{USERNAME}"
-        text_part do
-          body "This acknowledges receipt of your emeritus request. You can find the request at #{EMERITUS_REQUEST_URL}#{USERID}.txt. A copy is attached for your records.\n\nWarm Regards,\n\nSecretary, Apache Software Foundation\nsecretary@apache.org\n\n"
-        end
+  rc = ASF::SVN.create_(EMERITUS_REQUEST_URL, "#{USERID}.txt", signed_request, "Emeritus request from #{USERNAME} (#{USERID})", env, _)
+  if rc == 0
+    ASF::Mail.configure
+    mail = Mail.new do
+      from "secretary@apache.org"
+      to "#{USERNAME}<#{USERMAIL}>"
+      subject "Acknowledgement of emeritus request from #{USERNAME}"
+      text_part do
+        body "This acknowledges receipt of your emeritus request. You can find the request at #{EMERITUS_REQUEST_URL}#{USERID}.txt. A copy is attached for your records.\n\nWarm Regards,\n\nSecretary, Apache Software Foundation\nsecretary@apache.org\n\n"
       end
-      mail.attachments["#{USERID}.txt"] = signed_request
-      mail.deliver!
-    elsif rc == 1
-      _warn "Request file already exists"
     end
+    mail.attachments["#{USERID}.txt"] = signed_request
+    mail.deliver!
+  elsif rc == 1
+    _warn "Request file already exists"
   end
 elsif @action == 'request_reinstatement'
   ASF::Mail.configure
