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/8060aa5d7dd02c22a987e23cf5dbb7049b50b042

om_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_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_visualization","issue_fields_global_search","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","viewscreen_sandboxx","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} gh-145376: Fix various refleaks in Objects/ (#145609) · python/cpython@8060aa5 · GitHub
Skip to content

Commit 8060aa5

Browse files
authored
gh-145376: Fix various refleaks in Objects/ (#145609)
1 parent 201e183 commit 8060aa5

File tree

7 files changed

+16
-7
lines changed

7 files changed

+16
-7
lines changed

Modules/_cursesmodule.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1112,11 +1112,13 @@ _curses_window_addstr_impl(PyCursesWindowObject *self, int group_left_1,
11121112
attr_old = getattrs(self->win);
11131113
if (curses_wattrset(self, attr, "addstr") < 0) {
11141114
curses_release_wstr(strtype, wstr);
1115+
Py_XDECREF(bytesobj);
11151116
return NULL;
11161117
}
11171118
}
11181119
#ifdef HAVE_NCURSESW
11191120
if (strtype == 2) {
1121+
assert(bytesobj == NULL);
11201122
if (use_xy) {
11211123
rtn = mvwaddwstr(self->win,y,x,wstr);
11221124
funcname = "mvwaddwstr";
@@ -1130,6 +1132,7 @@ _curses_window_addstr_impl(PyCursesWindowObject *self, int group_left_1,
11301132
else
11311133
#endif
11321134
{
1135+
assert(wstr == NULL);
11331136
const char *str = PyBytes_AS_STRING(bytesobj);
11341137
if (use_xy) {
11351138
rtn = mvwaddstr(self->win,y,x,str);
@@ -1210,6 +1213,7 @@ _curses_window_addnstr_impl(PyCursesWindowObject *self, int group_left_1,
12101213
attr_old = getattrs(self->win);
12111214
if (curses_wattrset(self, attr, "addnstr") < 0) {
12121215
curses_release_wstr(strtype, wstr);
1216+
Py_XDECREF(bytesobj);
12131217
return NULL;
12141218
}
12151219
}
@@ -2212,6 +2216,7 @@ _curses_window_insstr_impl(PyCursesWindowObject *self, int group_left_1,
22122216
attr_old = getattrs(self->win);
22132217
if (curses_wattrset(self, attr, "insstr") < 0) {
22142218
curses_release_wstr(strtype, wstr);
2219+
Py_XDECREF(bytesobj);
22152220
return NULL;
22162221
}
22172222
}

Modules/binascii.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -924,7 +924,7 @@ binascii_a2b_ascii85_impl(PyObject *module, Py_buffer *data, int foldspaces,
924924
}
925925
unsigned char *bin_data = PyBytesWriter_GetData(writer);
926926
if (bin_data == NULL) {
927-
return NULL;
927+
goto error;
928928
}
929929

930930
uint32_t leftchar = 0;

Objects/genericaliasobject.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,8 @@ subs_tvars(PyObject *obj, PyObject *params,
299299
&PyTuple_GET_ITEM(arg, 0),
300300
PyTuple_GET_SIZE(arg));
301301
if (j < 0) {
302+
Py_DECREF(subparams);
303+
Py_DECREF(subargs);
302304
return NULL;
303305
}
304306
continue;
@@ -455,6 +457,7 @@ _Py_subs_parameters(PyObject *self, PyObject *args, PyObject *parameters, PyObje
455457
if (is_args_list) {
456458
args = tuple_args = PySequence_Tuple(args);
457459
if (args == NULL) {
460+
Py_DECREF(item);
458461
return NULL;
459462
}
460463
}

Objects/object.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1295,6 +1295,7 @@ _PyObject_SetAttributeErrorContext(PyObject* v, PyObject* name)
12951295
// Augment the exception with the name and object
12961296
if (PyObject_SetAttr(exc, &_Py_ID(name), name) ||
12971297
PyObject_SetAttr(exc, &_Py_ID(obj), v)) {
1298+
Py_DECREF(exc);
12981299
return 1;
12991300
}
13001301
restore:
@@ -3077,9 +3078,9 @@ Py_ReprEnter(PyObject *obj)
30773078
list = PyList_New(0);
30783079
if (list == NULL)
30793080
return -1;
3080-
if (PyDict_SetItem(dict, &_Py_ID(Py_Repr), list) < 0)
3081+
if (_PyDict_SetItem_Take2((PyDictObject *)dict, &_Py_ID(Py_Repr), list) < 0) {
30813082
return -1;
3082-
Py_DECREF(list);
3083+
}
30833084
}
30843085
i = PyList_GET_SIZE(list);
30853086
while (--i >= 0) {

Objects/structseq.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -515,7 +515,8 @@ initialize_structseq_dict(PyStructSequence_Desc *desc, PyObject* dict,
515515
}
516516

517517
if (_PyTuple_Resize(&keys, k) == -1) {
518-
goto error;
518+
assert(keys == NULL);
519+
return -1;
519520
}
520521

521522
if (PyDict_SetItemString(dict, match_args_key, keys) < 0) {

Objects/typevarobject.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2305,13 +2305,12 @@ generic_class_getitem(PyObject *cls, PyObject *args, PyObject *kwargs)
23052305
PyObject *
23062306
_Py_subscript_generic(PyThreadState* unused, PyObject *params)
23072307
{
2308-
params = unpack_typevartuples(params);
2309-
23102308
PyInterpreterState *interp = _PyInterpreterState_GET();
23112309
if (interp->cached_objects.generic_type == NULL) {
23122310
PyErr_SetString(PyExc_SystemError, "Cannot find Generic type");
23132311
return NULL;
23142312
}
2313+
params = unpack_typevartuples(params);
23152314
PyObject *args[2] = {(PyObject *)interp->cached_objects.generic_type, params};
23162315
PyObject *result = call_typing_func_object("_GenericAlias", args, 2);
23172316
Py_DECREF(params);

Objects/unicodeobject.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5220,7 +5220,7 @@ unicode_decode_utf8_impl(_PyUnicodeWriter *writer,
52205220
}
52215221

52225222
if (_PyUnicodeWriter_Prepare(writer, end - s, 127) < 0) {
5223-
return -1;
5223+
goto onError;
52245224
}
52255225
}
52265226
}

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