• R/O
  • SSH
  • HTTPS

kotoli: Commit


Commit MetaInfo

Revision208 (tree)
Time2010-07-17 02:24:08
Authorsgry

Log Message

修正)Ticket #22463。フォルダ作成時に不正なフォルダ名を指定するとエラー扱いするように修正。類似潜在バグを数件修正。

Change Summary

Incremental Difference

--- trunk/Kotoli/KotoliForm.cs (revision 207)
+++ trunk/Kotoli/KotoliForm.cs (revision 208)
@@ -664,21 +664,16 @@
664664 {
665665 if (e.Label != null)
666666 {
667- if (e.Label.Length > 0)
667+ if( e.Label != String.Empty
668+ && e.Label.IndexOfAny(Path.GetInvalidPathChars()) < 0
669+ && e.Label.IndexOf(Path.VolumeSeparatorChar) < 0
670+ && e.Label.IndexOf(Path.DirectorySeparatorChar) < 0
671+ && e.Label.IndexOf(Path.AltDirectorySeparatorChar) < 0 )
668672 {
669- char[] c = Path.GetInvalidPathChars();
670- if (e.Label.IndexOfAny(c) == -1)
671- {
672- e.Node.EndEdit(false);
673- // 新しいラベル名が有効なときの操作
674- String oldfn = browserView.SelectedNode.Tag.ToString();
675- _logic.RenameFolder( oldfn, e.Label );
676- }
677- else
678- {
679- e.CancelEdit = true;
680- MessageBox.Show(InvalidDirectoryNameMessage);
681- }
673+ e.Node.EndEdit(false);
674+ // 新しいラベル名が有効なときの操作
675+ String oldfn = browserView.SelectedNode.Tag.ToString();
676+ _logic.RenameFolder( oldfn, e.Label );
682677 }
683678 else
684679 {
--- trunk/Kotoli/KotoliLogic.cs (revision 207)
+++ trunk/Kotoli/KotoliLogic.cs (revision 208)
@@ -118,8 +118,19 @@
118118
119119 // ユーザが指定したフォルダ名を取得
120120 newDirName = form.NewFolderName;
121+ if( newDirName == ""
122+ || 0 <= newDirName.IndexOfAny(Path.GetInvalidPathChars())
123+ || 0 <= newDirName.IndexOf(Path.VolumeSeparatorChar)
124+ || 0 <= newDirName.IndexOf(Path.DirectorySeparatorChar)
125+ || 0 <= newDirName.IndexOf(Path.AltDirectorySeparatorChar) )
126+ {
127+ _kotoliForm.AlertError( KotoliForm.InvalidDirectoryNameMessage );
128+ return;
129+ }
121130 }
122131
132+ try
133+ {
123134 // ユーザが指定した名前のフォルダを作成
124135 newDirPath = Path.Combine( parentDirPath, newDirName );
125136 Directory.CreateDirectory( newDirPath );
@@ -126,6 +137,11 @@
126137
127138 // 新規作成したフォルダを選択
128139 _kotoliForm.SelectedNodePath = newDirPath;
140+ }
141+ catch( Exception ex )
142+ {
143+ _kotoliForm.AlertError( ex.Message );
144+ }
129145 }
130146
131147 /// <summary>
@@ -221,6 +237,8 @@
221237 return;
222238 }
223239
240+ try
241+ {
224242 // 名前を変更するフォルダのノードを取得
225243 folderNode = FindNodeByFilePath( folderPath, out exactMatch );
226244 Debug.Assert( exactMatch == true );
@@ -244,6 +262,11 @@
244262
245263 // 新しいメモノードを選択
246264 _kotoliForm.BrowserView.SelectedNode = folderNode;
265+ }
266+ catch( Exception ex )
267+ {
268+ _kotoliForm.AlertError( ex.Message );
269+ }
247270 }
248271
249272 /// <summary>
@@ -329,6 +352,8 @@
329352 return;
330353 }
331354
355+ try
356+ {
332357 // 現在開いているメモが未保存であれば保存するか尋ねる
333358 if( _kotoliForm.Azuki.Document.IsDirty )
334359 {
@@ -362,6 +387,11 @@
362387 {
363388 _memoPath = MakeMemoFileName(Path.GetDirectoryName((string)selNode.Tag));
364389 }
390+ }
391+ catch( Exception ex )
392+ {
393+ _kotoliForm.AlertError( ex.Message );
394+ }
365395 }
366396
367397 /// <summary>
Show on old repository browser