[#49993] メソッド呼び出し時の引数の値を VM 側で取得する方法について — Tetsuo Handa <penguin-kernel@...>

初めまして。 Linux カーネルプログラマの熊猫と申します。

12 messages 2017/02/28
[#49995] Re: メソッド呼び出し時の引数の値を VM 側で取得する方法について — SASADA Koichi <ko1@...> 2017/02/28

On 2017/02/28 14:06, Tetsuo Handa wrote:

[ruby-dev:49988] [Ruby trunk Bug#13254] Dir.exist? などで「ディスクがありません」ダイアログが表示される

From: yasmise@...
Date: 2017-02-26 03:39:37 UTC
List: ruby-dev #49988
Issue #13254 has been reported by y mise.

----------------------------------------
Bug #13254: Dir.exist? などで「ディスクがありません」ダイアログが表示される
https://bugs.ruby-lang.org/issues/13254

* Author: y mise
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.4.0p0 (2016-12-24 revision 57164) [x64-mswin64_140]
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
## 概要
windows 10で使用しています。
sdカードリーダーにメディアを差していない状態で、同ドライブに Dir.exist? などを行うと、次のメッセージダイアログが表示されスクリプトの実行が一時停止します。
「キャンセル」か「続行」を2回クリックするとスクリプトが再開し、Dir.exist? であれば false を返します。

~~~
---------------------------
ruby.exe - ディスクがありません
---------------------------
ドライブにディスクがありません。 ディスクをドライブ H: に挿入してください。 
---------------------------
キャンセル   再実行(T)   続行(C)   
---------------------------
~~~

## 期待する動作
現状では手動操作が必要になるため、メッセージダイアログが表示されないこと、一時停止しないことを期待します。

## 手元での再現手順
1) メディアを差していないsdカードリーダーをusbにつなぎます。
2) コマンドプロンプトで diskpart から list volume すると次の状態になっています。H: がカードリーダーです。

~~~
  Volume ###  Ltr Label        Fs    Type        Size     Status     Info
  ----------  --- -----------  ----  ----------  -------  ---------  --------
  Volume 0     E                       DVD-ROM         0 B  メディアなし
  Volume 1     D                NTFS   Partition    931 GB  正常
  Volume 2         システムで予約済み    NTFS   Partition     85 MB  正常         システム
  Volume 3     C                NTFS   Partition    111 GB  正常         ブート
  Volume 4                      NTFS   Partition    450 MB  正常         非表示
  Volume 5     H                       リムーバブル          0 B  メディアなし
~~~

3) irb でいくつか試すと以下のようになります。

~~~
irb(main):001:0> Dir.exist?("h:")
# 注:ここでダイアログが表示されます。閉じると次に進みます。
=> false
irb(main):002:0> File.stat("h:")
# 注:ここでダイアログが表示されます。閉じると次に進みます。
Errno::ENXIO: No such device or address @ rb_file_s_stat - h:
        from (irb):2:in `stat'
        from (irb):2
        from c:/ruby/bin/irb.cmd:19:in `<main>'
irb(main):003:0> File.directory?("h:")
# 注:ここでダイアログが表示されます。閉じると次に進みます。
=> false
~~~

4) 空の DVD-ROM ドライブに同じ事をしても、ダイアログが表示されることはありません。



-- 
https://bugs.ruby-lang.org/

In This Thread

Prev Next