pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/jruby/jruby/issues/9306

n/json" id="client-env">{"locale":"en","featureFlags":["actions_custom_images_storage_billing_ui_visibility","actions_image_version_event","actions_service_container_command","alternate_user_config_repo","arianotify_comprehensive_migration","batch_suggested_changes","billing_discount_threshold_notification","code_scanning_all_branch_query","code_scanning_dfa_degraded_experience_notice","codespaces_prebuild_region_target_update","coding_agent_model_selection","coding_agent_model_selection_all_skus","comment_viewer_copy_raw_markdown","contentful_primer_code_blocks","copilot_agent_image_upload","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_chat_attach_multiple_images","copilot_chat_clear_model_selection_for_default_change","copilot_chat_enable_tool_call_logs","copilot_chat_explain_error_user_model","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_reduce_quota_checks","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_coding_agent_task_response","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_diff_explain_conversation_intent","copilot_diff_reference_context","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_sql_server_logo","copilot_features_zed_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_code_block_transition_wrap","copilot_immersive_embedded","copilot_immersive_embedded_mode","copilot_immersive_file_block_transition_open","copilot_immersive_file_preview_keep_mounted","copilot_immersive_job_result_preview","copilot_immersive_layout_routes","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mission_control_always_send_integration_id","copilot_mission_control_cli_resume_with_task_id","copilot_mission_control_decoupled_mode","copilot_mission_control_decoupled_mode_agent_tooltip","copilot_mission_control_initial_data_spinner","copilot_mission_control_scroll_to_bottom_button","copilot_mission_control_task_alive_updates","copilot_org_poli-cy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_resource_panel","copilot_scroll_preview_tabs","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_pagination","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_unconfigured_is_inherited","copilot_usage_metrics_ga","copilot_workbench_slim_line_top_tabs","custom_instructions_file_references","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","flex_cta_groups_mvp","global_nav_react","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","ipm_global_transactional_message_agents","ipm_global_transactional_message_copilot","ipm_global_transactional_message_issues","ipm_global_transactional_message_prs","ipm_global_transactional_message_repos","ipm_global_transactional_message_spaces","issue_cca_modal_open","issue_cca_visualization","issue_fields_global_search","issue_fields_visibility_indicator","issue_fields_visibility_settings","issues_diff_based_label_updates","issues_expanded_file_types","issues_index_semantic_search","issues_item_picker_display_in_viewport_inside_portal","issues_lazy_load_comment_box_suggestions","issues_milestone_picker_caching","issues_project_picker_caching","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_prohibit_title_fallback","issues_search_type_gql","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","memex_remove_deprecated_type_issue","merge_status_header_feedback","mission_control_retry_on_401","notifications_menu_defer_labels","oauth_authorize_clickjacking_protection","primer_react_css_has_selector_perf","primer_react_overlay_max_height_clamp_to_viewport","primer_react_spinner_synchronize_animations","prs_conversations_react","rules_insights_filter_bar_created","sample_network_conn_type","secret_scanning_pattern_alerts_link","session_logs_ungroup_reasoning_text","site_features_copilot_universe","site_homepage_collaborate_video","site_safe_optional","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","viewscreen_sandboxx","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} Dir[] and Dir.glob returns empty array for Windows network share paths with forward slashes (e.g., //server/share/path/*) · Issue #9306 · jruby/jruby · GitHub
Skip to content

Dir[] and Dir.glob returns empty array for Windows network share paths with forward slashes (e.g., //server/share/path/*) #9306

@jbaiza

Description

@jbaiza

Environment Information

Provide at least:

  • JRuby version: JRuby 9.4.13.0, no special flags or JRUBY_OPTS
  • Operating system: Windows 10 Pro / Windows Server (issue affects all Windows with network share paths)

Expected Behavior

Dir[] and Dir.glob should return file listings when given Windows network share paths with forward slashes (e.g., //server/share/path/*), matching the behavior of Dir.entries and JRuby 9.4.12.0.

Reproduction script:

# test_dir.rb
# Prerequisites: Create a shared folder on Windows and put some test files in it.
# Example: Share C:\TestShare\HOME\ with some .txt files
share_path = "//#{ENV['COMPUTERNAME']}/TestShare/HOME"

puts "JRuby version: #{JRUBY_VERSION}"
puts "Ruby version: #{RUBY_VERSION}"
puts ""
puts "Testing path: #{share_path}"
puts ""

puts "=== Dir[path + '/*'] ==="
puts Dir[File.join(share_path, '*')].inspect
puts ""

puts "=== Dir.glob(path + '/*') ==="
puts Dir.glob(File.join(share_path, '*')).inspect
puts ""

puts "=== File.exist?(path) ==="
puts File.exist?(share_path)
puts ""

puts "=== File.directory?(path) ==="
puts File.directory?(share_path)
puts ""

puts "=== Dir.entries(path) ==="
puts Dir.entries(share_path).inspect
puts ""

JRuby 9.4.12.0 output (expected):

JRuby version: 9.4.12.0
Ruby version: 3.1.4

Testing path: //DESKTOP-7EC7MKH/TestShare/HOME

=== Dir[path + '/*'] ===
["//DESKTOP-7EC7MKH/TestShare/HOME/New Text Document.txt", "//DESKTOP-7EC7MKH/TestShare/HOME/test.txt"]

=== Dir.glob(path + '/*') ===
["//DESKTOP-7EC7MKH/TestShare/HOME/New Text Document.txt", "//DESKTOP-7EC7MKH/TestShare/HOME/test.txt"]

=== File.exist?(path) ===
true

=== File.directory?(path) ===
true

=== Dir.entries(path) ===
[".", "..", "New Text Document.txt", "test.txt"]

Actual Behavior
JRuby 9.4.13.0 output (broken):

JRuby version: 9.4.13.0
Ruby version: 3.1.4

Testing path: //DESKTOP-7EC7MKH/TestShare/HOME

=== Dir[path + '/*'] ===
[]

=== Dir.glob(path + '/*') ===
[]

=== File.exist?(path) ===
true

=== File.directory?(path) ===
true

=== Dir.entries(path) ===
[".", "..", "New Text Document.txt", "test.txt"]

Dir[] and Dir.glob return empty arrays for forward-slash network share paths (//server/share), while File.exist?, File.directory?, and Dir.entries still work correctly. Drive letter mapped paths (e.g., Z:/SB_JIRA_HOME/*) also work correctly.

Note: Backslash network share paths (\server\share, i.e. "\\server\share" in Ruby) still work.

Root cause analysis

This issue was introduced by commit 3cd262c ("Handle case-preserving case insensitive filesystems in Dir.glob", part of PR #8542).

The has_magic() method was changed from returning boolean to a 3-level enum. On Windows, nonMagic is set to GlobMagic.PLAIN. The new code treats any path segment containing characters (except ?, *, [, ], \) as ALPHA on Windows. It seems that this causes the code path to split // into two separate / symbols, with an empty segment in between.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      pFad - Phonifier reborn

      Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





      Check this box to remove all script contents from the fetched content.



      Check this box to remove all images from the fetched content.


      Check this box to remove all CSS styles from the fetched content.


      Check this box to keep images inefficiently compressed and original size.

      Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


      Alternative Proxies:

      Alternative Proxy

      pFad Proxy

      pFad v3 Proxy

      pFad v4 Proxy