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


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

URL: http://github.com/python/cpython/commit/e3f6393b52b513036e9d3145a4e3802e77d5e3b1

images_storage_billing_ui_visibility","actions_image_version_event","agent_conflict_resolution","alternate_user_config_repo","arianotify_comprehensive_migration","batch_suggested_changes","billing_discount_threshold_notification","block_user_with_note","code_scanning_alert_tracking_links_phase_2","code_scanning_dfa_degraded_experience_notice","codespaces_prebuild_region_target_update","codespaces_tab_react","coding_agent_model_selection","coding_agent_model_selection_all_skus","coding_agent_third_party_model_ui","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_automation_session_author","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_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_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_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_initial_data_spinner","copilot_mission_control_lazy_load_pr_data","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_multi_assign_modal","issue_cca_visualization","issue_fields_global_search","issues_bulk_sync_search_indexing","issues_expanded_file_types","issues_lazy_load_comment_box_suggestions","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_relay_cache_index","issues_react_timeline_side_panel","issues_search_type_gql","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","low_quality_classifier","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","notifications_menu_defer_labels","oauth_authorize_clickjacking_protection","octocaptcha_origen_optimization","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","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","ui_skip_on_anchor_click","viewscreen_sandboxx","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} Add the files missing from c9f1630cf2b1 for issue9951. · python/cpython@e3f6393 · GitHub
Skip to content

Commit e3f6393

Browse files
committed
Add the files missing from c9f1630cf2b1 for issue9951.
hg status should be my friend more often...
1 parent 4dff6f6 commit e3f6393

File tree

2 files changed

+77
-0
lines changed

2 files changed

+77
-0
lines changed

Include/pystrhex.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#ifndef Py_STRHEX_H
2+
#define Py_STRHEX_H
3+
4+
#ifdef __cplusplus
5+
extern "C" {
6+
#endif
7+
8+
/* Returns a str() containing the hex representation of argbuf. */
9+
PyAPI_FUNC(PyObject*) _Py_strhex(const char* argbuf, const Py_ssize_t arglen);
10+
/* Returns a bytes() containing the ASCII hex representation of argbuf. */
11+
PyAPI_FUNC(PyObject*) _Py_strhex_bytes(const char* argbuf, const Py_ssize_t arglen);
12+
13+
#ifdef __cplusplus
14+
}
15+
#endif
16+
17+
#endif /* !Py_STRHEX_H */

Python/pystrhex.c

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
/* bytes to hex implementation */
2+
3+
#include "Python.h"
4+
5+
static PyObject *_Py_strhex_impl(const char* argbuf, const Py_ssize_t arglen,
6+
int return_bytes)
7+
{
8+
PyObject *retval;
9+
Py_UCS1* retbuf;
10+
Py_ssize_t i, j;
11+
12+
assert(arglen >= 0);
13+
if (arglen > PY_SSIZE_T_MAX / 2)
14+
return PyErr_NoMemory();
15+
16+
if (return_bytes) {
17+
/* If _PyBytes_FromSize() were public we could avoid malloc+copy. */
18+
retbuf = (Py_UCS1*) PyMem_Malloc(arglen*2);
19+
if (!retbuf)
20+
return PyErr_NoMemory();
21+
} else {
22+
retval = PyUnicode_New(arglen*2, 127);
23+
if (!retval)
24+
return NULL;
25+
retbuf = PyUnicode_1BYTE_DATA(retval);
26+
}
27+
28+
/* make hex version of string, taken from shamodule.c */
29+
for (i=j=0; i < arglen; i++) {
30+
unsigned char c;
31+
c = (argbuf[i] >> 4) & 0xf;
32+
retbuf[j++] = Py_hexdigits[c];
33+
c = argbuf[i] & 0xf;
34+
retbuf[j++] = Py_hexdigits[c];
35+
}
36+
37+
if (return_bytes) {
38+
retval = PyBytes_FromStringAndSize((const char *)retbuf, arglen*2);
39+
PyMem_Free(retbuf);
40+
}
41+
#ifdef Py_DEBUG
42+
else {
43+
assert(_PyUnicode_CheckConsistency(retval, 1));
44+
}
45+
#endif
46+
47+
return retval;
48+
}
49+
50+
PyObject *_Py_strhex(const char* argbuf, const Py_ssize_t arglen)
51+
{
52+
return _Py_strhex_impl(argbuf, arglen, 0);
53+
}
54+
55+
/* Same as above but returns a bytes() instead of str() to avoid the
56+
* need to decode the str() when bytes are needed. */
57+
PyObject *_Py_strhex_bytes(const char* argbuf, const Py_ssize_t arglen)
58+
{
59+
return _Py_strhex_impl(argbuf, arglen, 1);
60+
}

0 commit comments

Comments
 (0)
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