                 .fail -> failedFunc()
 
             if data.source_code.error
-              if confirm("前に#{sourceCode.get('filename')}という名前でセーブしているけど本当にセーブしますか？\nセーブすると前に作成したプログラムは消えてしまうよ！")
+              if sourceCode.get('filename') == Smalruby.savedFilename ||
+                 confirm("前に#{sourceCode.get('filename')}という名前でセーブしているけど本当にセーブしますか？\nセーブすると前に作成したプログラムは消えてしまうよ！")
                 sourceCode.write(true)
                   .done (data) ->
                     afterSave()

        sourceCode.write()
          .done (data) ->
            afterSave = ->
              sourceCode.check()
                .done (data) ->
                  if data.length > 0

          .done (data) ->
            afterSave = ->
              $.unblockUI()
              Smalruby.savedFilename = sourceCode.get('filename')
              window.changed = false
              window.successMessage('セーブしました')

            if data.source_code.error
              if sourceCode.get('filename') == Smalruby.savedFilename ||
                 confirm("前に#{sourceCode.get('filename')}という名前でセーブしているけど本当にセーブしますか？\nセーブすると前に作成したプログラムは消えてしまうよ！")
                sourceCode.write(true)
                  .done (data) ->
                    afterSave()
