Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Fix/heap corruption #913

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
jesper-olsen wants to merge 4 commits into TheAlgorithms:master
base: master
Choose a base branch
Loading
from jesper-olsen:fix/heap-corruption

Conversation

@jesper-olsen
Copy link
Contributor

@jesper-olsen jesper-olsen commented Sep 25, 2025

Pull Request Template

Description

Fix heap corruption in Floyd's algorithm tests

Problem

The test test_detect_cycle_with_cycle creates a cycle in a LinkedList but doesn't break it before the list is dropped. This causes heap corruption because the Drop implementation tries to free nodes in an infinite loop, potentially causing double-frees.

Solution

Break the cycle at the end of the test by setting the tail's next pointer to None.

Testing

  • Ran cargo test data_structures multiple times without heap corruption errors
  • Confirmed the fix by running tests with --test-threads=1 for consistency

Fixes intermittent test failures with "Heap corruption detected" errors.

Type of change

Please delete options that are not relevant.

  • [x ] Bug fix (non-breaking change which fixes an issue)

Checklist:

  • [x ] I ran bellow commands using the latest version of rust nightly.
  • [x ] I ran cargo clippy --all -- -D warnings just before my last commit and fixed any issue that was found.

Note I ran cargo clippy --all -- -D warnings locally, and the build fails due to 24 existing warnings/errors (e.g., clippy::manual-is-multiple-of, clippy::needless-range-loop) in unrelated files (ciphers, math, sorting).

  • [x ] I ran cargo fmt just before my last commit.
  • I ran cargo test just before my last commit and all tests passed.
  • [x ] I checked COUNTRIBUTING.md and my code follows its guidelines.

Please make sure that if there is a test that takes too long to run ( > 300ms), you #[ignore] that or
try to optimize your code or make the test easier to run. We have this rule because we have hundreds of
tests to run; If each one of them took 300ms, we would have to wait for a long time.

- Change HuffmanDictionary::new() to return Option<Self> for safer API
- Add proper handling for empty alphabet (returns None)
- Add special case handling for single-symbol alphabets
- Replace unwrap() calls with ? operator in decode() for better error handling
- Add #[inline(always)] optimization for frequently called get_bit()
- Add comprehensive tests for edge cases
- Improve documentation with usage examples
BREAKING CHANGE: HuffmanDictionary::new() now returns Option<Self>
Copy link

Codecov Report

❌ Patch coverage is 96.92308% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 95.32%. Comparing base (f2a23e9) to head (9b57391).

Files with missing lines Patch % Lines
src/general/huffman_encoding.rs 96.72% 2 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@
## master #913 +/- ##
=======================================
 Coverage 95.32% 95.32% 
=======================================
 Files 319 319 
 Lines 20807 20858 +51 
=======================================
+ Hits 19834 19883 +49 
- Misses 973 975 +2 

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link

This pull request has been automatically marked as abandoned because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@imp2002 imp2002 Awaiting requested review from imp2002 imp2002 is a code owner

Assignees

No one assigned

Labels

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

AltStyle によって変換されたページ (->オリジナル) /