René's URL Explorer Experiment


Title: Add ByteRepr for Ptr by lucic71 · Pull Request #225 · Cpp2Rust/cpp2rust · GitHub

Open Graph Title: Add ByteRepr for Ptr by lucic71 · Pull Request #225 · Cpp2Rust/cpp2rust

X Title: Add ByteRepr for Ptr by lucic71 · Pull Request #225 · Cpp2Rust/cpp2rust

Description: ByteRepr::to_bytes and ByteRepr::from_bytes are implemented using the new PtrRegistry. PtrRegistry is a global collection that keeps mappings between Ptr and [base, base + byte_len]. The right side of the interval includes base + byte_len because it's valid to have a pointer +1 OOB. When switching from Ptr to the integer representation, the program is free to do arithmetic on the integer representation. When switching back form integer to Ptr, we construct a Ptr if the integer representation is describing a valid Ptr inside PtrRegistry, otherwise panic. The PtrRegistry interface is defined as follows: struct PtrRegistry { // Builds a synthetic address space that behaves like C's. Neither Weak::as_ptr (1) nor &T (2) // can be range bases. A bump cursor inside RangeAllocator hands disjoint, never-reused, // [base, base + byte_len] ranges. // // (1) Weak>::as_ptr() returns the address of the Rc payload. That's around 16 // bytes. This breaks for ranges > 16 bytes as it would overlap with other valid ranges. // (2) &T does not live across reallocations, especially when T is Vec ranges: RangeAllocator, // Mapping between Ptr and [base, base + byte_len] ranges. For efficiency, the mapping is stored // as base -> (Ptr, byte_len). Byte::from_bytes is doing O(log N) lookups of SyntheticAddr // inside the [base, base + byte_len] ranges. entries: BTreeMap, } impl PtrRegistry { // Using the real address (Weak::as_ptr) and the length of the pointed-to data, create // a synthetic address (stable address) that is used as a key in PtrRegistry::entries fn put(&mut self, real_addr: RealAddr, byte_len: ByteLen, ptr: AnyPtr) -> SyntheticAddr; // Using a SyntheticAddr, return the associated entry in PtrRegistry::entries. The input // addr can be in the middle of [base, base + offset), get returns base. fn get(&self, addr: SyntheticAddr) -> Option<(SyntheticAddr, AnyPtr, ByteLen)>; } ByteRepr::to_bytes becomes a call to: PtrRegistry::put( // address() (Weak::as_ptr()) is only an identity key. It cannot act as a range base. This // is the real address described above in the interface of PtrRegistry::put. It points // at the Rc payload which does not know how many c_byte_len bytes are layed out in // memory. For example, the Rc payload is around 16 bytes, but we want to serialize a // pointer to object that is 100 bytes long. Doing [address(), address() + 100] is wrong because // that can overlap with other valid Rc allocations. // // PtrRegistry::put takes care of this by creating a SyntheticAddr out of (address(), c_byte_len()) // that can be used as a non-overlapping range with the correct size. self.kind.address(), self.c_byte_len(), // This is a weak pointer and a type erased pointer at the same time. It will be saved in // PtrRegistry::entries. It's rebased at offset 0 becaues when it will be deserialized the // correct offset will be applied. Ptr { offset: 0, kind: self.kind.clone(), } .to_any(), ) ByteRepr::from_bytes becomes a call to PtrRegistry::get + reconstructing the Ptr with the correct offset and the correct type. Notes about this implementation: PtrRegistry::put does O(1) amortized eviction using AnyPtr::is_dangling. Instead of traversing all entries an every put, which would be O(n), we use the following strategy: evict only after entries has doubled in size since the last eviction. If n is the size after the current eviction, we put n elements until we reach 2n, which is the next eviction step. This means that the amortized cost is O(2n/n) = O(1) This model does not panic on pointers crafted from out-of-bounds integers, for example: int a = 1; int b[100]; auto p = (uintptr_t) &a; *(int*)(p + 50) = 42; &a is serialized as a Ptr with [base_a, base_a + 4], then on the integer representation of the Ptr, the program does base_a + 50 which happens to fit into [base_b, base_b + 100]. Ptr::from_bytes happily deserializes base_a + 50 as being part of the b range. This is not ideal, a panic should be generated instead. @nunoplopes should we focus on fixing this now or can we consider it a known limitation? RangeAllocator always allocates disjoint ranges. So endA == startB is not supported because the right end of the interval [base, base + size] is inclusive in order to accept creating a +1 OOB pointer The integer representation of NULL is always 0 Because AnyPtr is saved in PtrRegistry, putting a pointer of type A and getting a pointer of type B is allowed using reinterpret_cast

Open Graph Description: ByteRepr::to_bytes and ByteRepr::from_bytes are implemented using the new PtrRegistry. PtrRegistry is a global collection that keeps mappings between Ptr and [base, base + byte_len]. The right side...

X Description: ByteRepr::to_bytes and ByteRepr::from_bytes are implemented using the new PtrRegistry. PtrRegistry is a global collection that keeps mappings between Ptr and [base, base + byte_len]. The right side...

Opengraph URL: https://github.com/Cpp2Rust/cpp2rust/pull/225

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:b6808ab9-b04f-8989-7dd7-5cda4a6bfbcc
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idEACA:4950B:16D00D9:1EED916:6A4F08D6
html-safe-nonce2fb780555298707fcbeb794a0bf9605531a11506fa0dfa83c347991740267376
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJFQUNBOjQ5NTBCOjE2RDAwRDk6MUVFRDkxNjo2QTRGMDhENiIsInZpc2l0b3JfaWQiOiI5MDg4OTU4MjE5NjExNDc0MTM0IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=
visitor-hmac91aa0666658f5484e3f93cb2f24f3aef3b3d5c1f65609591f81d19b19a7bf55a
hovercard-subject-tagpull_request:3979434048
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/Cpp2Rust/cpp2rust/pull/225/files
twitter:imagehttps://avatars.githubusercontent.com/u/44677774?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/44677774?s=400&v=4
og:image:altByteRepr::to_bytes and ByteRepr::from_bytes are implemented using the new PtrRegistry. PtrRegistry is a global collection that keeps mappings between Ptr and [base, base + byte_len]. The right side...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Noneb92d11c0aa4a77d54ef4af1078b6a15fb5a70a215b30c4ecf28889d5a8e656d9
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/Cpp2Rust/cpp2rust git https://github.com/Cpp2Rust/cpp2rust.git
octolytics-dimension-user_id197474191
octolytics-dimension-user_loginCpp2Rust
octolytics-dimension-repository_id1183095779
octolytics-dimension-repository_nwoCpp2Rust/cpp2rust
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id1183095779
octolytics-dimension-repository_network_root_nwoCpp2Rust/cpp2rust
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release2b8f23afb982271f1b22258a94aede67a6b77760
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/Cpp2Rust/cpp2rust/pull/225/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FCpp2Rust%2Fcpp2rust%2Fpull%2F225%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2FCpp2Rust%2Fcpp2rust%2Fpull%2F225%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=Cpp2Rust%2Fcpp2rust
Reloadhttps://github.com/Cpp2Rust/cpp2rust/pull/225/files
Reloadhttps://github.com/Cpp2Rust/cpp2rust/pull/225/files
Reloadhttps://github.com/Cpp2Rust/cpp2rust/pull/225/files
Please reload this pagehttps://github.com/Cpp2Rust/cpp2rust/pull/225/files
Cpp2Rust https://github.com/Cpp2Rust
cpp2rusthttps://github.com/Cpp2Rust/cpp2rust
Notifications https://github.com/login?return_to=%2FCpp2Rust%2Fcpp2rust
Fork 5 https://github.com/login?return_to=%2FCpp2Rust%2Fcpp2rust
Star 65 https://github.com/login?return_to=%2FCpp2Rust%2Fcpp2rust
Code https://github.com/Cpp2Rust/cpp2rust
Issues 6 https://github.com/Cpp2Rust/cpp2rust/issues
Pull requests 14 https://github.com/Cpp2Rust/cpp2rust/pulls
Actions https://github.com/Cpp2Rust/cpp2rust/actions
Security and quality 0 https://github.com/Cpp2Rust/cpp2rust/security
Insights https://github.com/Cpp2Rust/cpp2rust/pulse
Code https://github.com/Cpp2Rust/cpp2rust
Issues https://github.com/Cpp2Rust/cpp2rust/issues
Pull requests https://github.com/Cpp2Rust/cpp2rust/pulls
Actions https://github.com/Cpp2Rust/cpp2rust/actions
Security and quality https://github.com/Cpp2Rust/cpp2rust/security
Insights https://github.com/Cpp2Rust/cpp2rust/pulse
Sign up for GitHub https://github.com/signup?return_to=%2FCpp2Rust%2Fcpp2rust%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2FCpp2Rust%2Fcpp2rust%2Fissues%2Fnew%2Fchoose
lucic71https://github.com/lucic71
Cpp2Rust:masterhttps://github.com/Cpp2Rust/cpp2rust/tree/master
lucic71:ptr-bytereprhttps://github.com/lucic71/cpp2rust/tree/ptr-byterepr
Conversation 5 https://github.com/Cpp2Rust/cpp2rust/pull/225
Commits 15 https://github.com/Cpp2Rust/cpp2rust/pull/225/commits
Checks 9 https://github.com/Cpp2Rust/cpp2rust/pull/225/checks
Files changed https://github.com/Cpp2Rust/cpp2rust/pull/225/files
Please reload this pagehttps://github.com/Cpp2Rust/cpp2rust/pull/225/files
Add ByteRepr for Ptr https://github.com/Cpp2Rust/cpp2rust/pull/225/files#top
Show all changes 15 commits https://github.com/Cpp2Rust/cpp2rust/pull/225/files
e75e87d Add dummy ByteRepr for opaque structs lucic71 Jul 2, 2026 https://github.com/Cpp2Rust/cpp2rust/pull/225/commits/e75e87d03750bf0889632c409fd1562fc025ed5b
7e10a1d Add ByteRepr for Ptr and AnyPtr lucic71 Jul 2, 2026 https://github.com/Cpp2Rust/cpp2rust/pull/225/commits/7e10a1d0f17bdcd5c30d48c0e6d3d27d6f709199
302a325 Bail-out early if reinterpreted pointer is null lucic71 Jul 2, 2026 https://github.com/Cpp2Rust/cpp2rust/pull/225/commits/302a325728f731efcc6114bf88dc11fb3ce309c2
414fc4e Allow comparison-by-address of void pointers lucic71 Jul 2, 2026 https://github.com/Cpp2Rust/cpp2rust/pull/225/commits/414fc4e5d0b3c512a4f5ba5f2be5d81c4fd4d4ad
500600a Update tests lucic71 Jul 2, 2026 https://github.com/Cpp2Rust/cpp2rust/pull/225/commits/500600a225bfc50b429134c0809771ac393f8b8f
ba3bdc7 cargo fmt lucic71 Jul 2, 2026 https://github.com/Cpp2Rust/cpp2rust/pull/225/commits/ba3bdc7d96bc014f5467cc2c33c1fd171ea95c88
3288f90 cargo fmt lucic71 Jul 2, 2026 https://github.com/Cpp2Rust/cpp2rust/pull/225/commits/3288f90e8c681865c95c65dae16f1cbbd3679f3d
32d9d9c Add arrayEndA == objectStartB test lucic71 Jul 2, 2026 https://github.com/Cpp2Rust/cpp2rust/pull/225/commits/32d9d9c95ceb0d97989f74512e85cf8220c4dda5
bd41414 Add null pointer serialization/deserialization test lucic71 Jul 2, 2026 https://github.com/Cpp2Rust/cpp2rust/pull/225/commits/bd4141415c0f82f9dd534abd7bd5ce7db4534949
43f686d Add ub tests for int to pointer conversion lucic71 Jul 2, 2026 https://github.com/Cpp2Rust/cpp2rust/pull/225/commits/43f686d136c5c8bd620164e2019b6e09d0019afb
41fa40b Add is_dangling lucic71 Jul 2, 2026 https://github.com/Cpp2Rust/cpp2rust/pull/225/commits/41fa40b96d4f169314c0427c8d7733074483d54e
c111151 Evict dead entries on PtrRegistry::put lucic71 Jul 2, 2026 https://github.com/Cpp2Rust/cpp2rust/pull/225/commits/c11115114b6def9197cf7f2f83ca2a96102af6f7
49bbc5b Add pointer to struct serialization test lucic71 Jul 3, 2026 https://github.com/Cpp2Rust/cpp2rust/pull/225/commits/49bbc5b5c3fffd28efa67246e570d26d48660c10
299831f Add c_byte_offset and c_byte_len lucic71 Jul 3, 2026 https://github.com/Cpp2Rust/cpp2rust/pull/225/commits/299831f6497976fd687490c254bf089ee3a2460f
2b147de Rename swept_len to evicted_len lucic71 Jul 3, 2026 https://github.com/Cpp2Rust/cpp2rust/pull/225/commits/2b147de1e09c9cdd14f2787fb9d2c8d32d99145d
Clear filters https://github.com/Cpp2Rust/cpp2rust/pull/225/files
Please reload this pagehttps://github.com/Cpp2Rust/cpp2rust/pull/225/files
Please reload this pagehttps://github.com/Cpp2Rust/cpp2rust/pull/225/files
converter.cpp https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-87f37877b158de5c88f4955ff97b30bfebd1e30d15052089259f15f0bff6ad9d
fn_ptr.rs https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-4b65c14023b11e25c540869b14f45d5b4535d92055cecf38e3acd8c600ae2c1e
rc.rs https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-c6af5997c81745c6c5e9f2bd1fe6afaeb55442198621078c4c1126492c4d4a80
reinterpret.rs https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-5740d650ed2c20be54e2527dc0df4bd78f8fd31761f2c084ac089989139fcdba
opaque_forward_decl.rs https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-3ceb50dc39c68cd81c0dafd3a8f5d53b24e447eb539a3fff049ea1033a869780
opaque_forward_decl.rs https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-2e0e55537fb1821073509646ebd15262ded08dd07b0a1e1afe56a144aa6c473f
int_to_pointer_out_of_range.c https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-372a9b8b75ce40add38e2e965161a7cb117263a5f1ab01e8f7592484ebb03266
int_to_pointer_random.c https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-87a9d950555dcff71b2f2add2b0f6dfc9496a24dde90f3f4887ed6e94a4dad6e
int_to_pointer_out_of_range.rs https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-387067615e35688c69dd7b6bdb9a31d152ca2fbb68d999e3d89dc97b34414eb2
int_to_pointer_random.rs https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-2212bae0d2602bb2ef429e25d10dedbb75f9703b83352da2e9af5934663b6c05
int_to_pointer_out_of_range.rs https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-94cc22ba9ded899557a01f9877f5237e236fbf35fd0abc42be217c84fac46054
int_to_pointer_random.rs https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-906e7990c82afa7322c151027e3e9ee8ab6b2859355c89775570e46085102a30
opaque_forward_decl.rs https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-8f5388eb421c211a7005ec333376e4f5a5af2c9f2574a21b714779cb28084537
struct_member_array_adjacency.rs https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-5c6ab5f1e16c569f632612ae30cc9dd5d5db269a8df3021d411cbcb5a6d8145f
union_pointer_int_roundtrip.rs https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-c792fc05af23b6c7d9b96fa22fe84244e17273b939e6b560f4d1f1b6e71c7061
union_pointer_null_roundtrip.rs https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-d1147c6c373ad94a213e35e8cb00289c951e8b8d89db50f2b3d0261ed68115d8
union_struct_pointer_roundtrip.rs https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-0053e9c3538b0256afc2b1ec35c66a4d3d8090a83416db6a297a1d442fdd3286
opaque_forward_decl.rs https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-e505090146697ce9df435f364fd46b0577ebea4776705de99fb97279acda53b9
struct_member_array_adjacency.rs https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-98e444a398c63c2d9e5a00dc052cebfaa4132aeca72b82edc32954b7548f1c23
union_pointer_int_roundtrip.rs https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-bb6e6a0cbbdbf69184e10eae3fbfd263d4f9c09e572e2feb77271dcb7c4ba03c
union_pointer_null_roundtrip.rs https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-5f482741a2e0b90229c5634daf9a6cf7a52e69aae3ede767fb88fcf289e0dc30
union_struct_pointer_roundtrip.rs https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-6d5c1a1dacff5af3b2448049029e1b0527c621411371bedbc8d06a0c77245288
struct_member_array_adjacency.c https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-96b7c6b44338c96e511824e34c2a8c519ac8c5e138ea3f7835686b185f50a306
union_pointer_int_roundtrip.c https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-d05c1b29aa211dfbf814cd4ce714c42ce58a6497cae0db51de3a3f52182c5a72
union_pointer_null_roundtrip.c https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-70bde7289d36fd830551025085ffc22ade738ab6c0f2641050115e451be21abc
union_pointer_pun_address.c https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-60d66b4e486767c8a0b5becdd5f78fafbfc623b7f141701caff2619d9c29e18b
union_pointer_pun_writethrough.c https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-4d4f8cf9aab758201d0024b70ec39a61d41f04aff8f6a002cb8f6dec90c828ef
union_struct_pointer_roundtrip.c https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-f2c2bc93555739306b26ad0c5397bc14818e38db51edea45acda052bc2eac72d
union_tagged_many_arms.c https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-b278fb42d23be5100d4fb1a99835df372d5e5395f1c1495caeb042b220bc5937
union_tagged_simple.c https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-98daff350919a7cac15e7758ebe9d7d911780d6a19034b25ba8c8dc2506785e1
union_void_ptr_sized_deref.c https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-098d1f0aec68f64a5fa56bad75092c18bb8bfe99adbe3e14c0de272c56561e37
cpp2rust/converter/converter.cpphttps://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-87f37877b158de5c88f4955ff97b30bfebd1e30d15052089259f15f0bff6ad9d
View file https://github.com/Cpp2Rust/cpp2rust/blob/2b147de1e09c9cdd14f2787fb9d2c8d32d99145d/cpp2rust/converter/converter.cpp
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/Cpp2Rust/cpp2rust/pull/225/{{ revealButtonHref }}
https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-87f37877b158de5c88f4955ff97b30bfebd1e30d15052089259f15f0bff6ad9d
https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-87f37877b158de5c88f4955ff97b30bfebd1e30d15052089259f15f0bff6ad9d
libcc2rs/src/fn_ptr.rshttps://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-4b65c14023b11e25c540869b14f45d5b4535d92055cecf38e3acd8c600ae2c1e
View file https://github.com/Cpp2Rust/cpp2rust/blob/2b147de1e09c9cdd14f2787fb9d2c8d32d99145d/libcc2rs/src/fn_ptr.rs
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/Cpp2Rust/cpp2rust/pull/225/{{ revealButtonHref }}
https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-4b65c14023b11e25c540869b14f45d5b4535d92055cecf38e3acd8c600ae2c1e
https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-4b65c14023b11e25c540869b14f45d5b4535d92055cecf38e3acd8c600ae2c1e
libcc2rs/src/rc.rshttps://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-c6af5997c81745c6c5e9f2bd1fe6afaeb55442198621078c4c1126492c4d4a80
View file https://github.com/Cpp2Rust/cpp2rust/blob/2b147de1e09c9cdd14f2787fb9d2c8d32d99145d/libcc2rs/src/rc.rs
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/Cpp2Rust/cpp2rust/pull/225/{{ revealButtonHref }}
https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-c6af5997c81745c6c5e9f2bd1fe6afaeb55442198621078c4c1126492c4d4a80
https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-c6af5997c81745c6c5e9f2bd1fe6afaeb55442198621078c4c1126492c4d4a80
https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-c6af5997c81745c6c5e9f2bd1fe6afaeb55442198621078c4c1126492c4d4a80
https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-c6af5997c81745c6c5e9f2bd1fe6afaeb55442198621078c4c1126492c4d4a80
https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-c6af5997c81745c6c5e9f2bd1fe6afaeb55442198621078c4c1126492c4d4a80
https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-c6af5997c81745c6c5e9f2bd1fe6afaeb55442198621078c4c1126492c4d4a80
https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-c6af5997c81745c6c5e9f2bd1fe6afaeb55442198621078c4c1126492c4d4a80
https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-c6af5997c81745c6c5e9f2bd1fe6afaeb55442198621078c4c1126492c4d4a80
https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-c6af5997c81745c6c5e9f2bd1fe6afaeb55442198621078c4c1126492c4d4a80
nunoplopeshttps://github.com/nunoplopes
Jul 5, 2026https://github.com/Cpp2Rust/cpp2rust/pull/225/files#r3525099473
Learn morehttps://docs.github.com/articles/managing-disruptive-comments/#hiding-a-comment
Please reload this pagehttps://github.com/Cpp2Rust/cpp2rust/pull/225/files
https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-c6af5997c81745c6c5e9f2bd1fe6afaeb55442198621078c4c1126492c4d4a80
libcc2rs/src/reinterpret.rshttps://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-5740d650ed2c20be54e2527dc0df4bd78f8fd31761f2c084ac089989139fcdba
View file https://github.com/Cpp2Rust/cpp2rust/blob/2b147de1e09c9cdd14f2787fb9d2c8d32d99145d/libcc2rs/src/reinterpret.rs
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/Cpp2Rust/cpp2rust/pull/225/{{ revealButtonHref }}
https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-5740d650ed2c20be54e2527dc0df4bd78f8fd31761f2c084ac089989139fcdba
https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-5740d650ed2c20be54e2527dc0df4bd78f8fd31761f2c084ac089989139fcdba
https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-5740d650ed2c20be54e2527dc0df4bd78f8fd31761f2c084ac089989139fcdba
https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-5740d650ed2c20be54e2527dc0df4bd78f8fd31761f2c084ac089989139fcdba
https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-5740d650ed2c20be54e2527dc0df4bd78f8fd31761f2c084ac089989139fcdba
tests/multi-file/opaque_forward_decl/out/refcount/opaque_forward_decl.rshttps://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-3ceb50dc39c68cd81c0dafd3a8f5d53b24e447eb539a3fff049ea1033a869780
View file https://github.com/Cpp2Rust/cpp2rust/blob/2b147de1e09c9cdd14f2787fb9d2c8d32d99145d/tests/multi-file/opaque_forward_decl/out/refcount/opaque_forward_decl.rs
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/Cpp2Rust/cpp2rust/pull/225/{{ revealButtonHref }}
https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-3ceb50dc39c68cd81c0dafd3a8f5d53b24e447eb539a3fff049ea1033a869780
tests/multi-file/opaque_forward_decl/out/unsafe/opaque_forward_decl.rshttps://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-2e0e55537fb1821073509646ebd15262ded08dd07b0a1e1afe56a144aa6c473f
View file https://github.com/Cpp2Rust/cpp2rust/blob/2b147de1e09c9cdd14f2787fb9d2c8d32d99145d/tests/multi-file/opaque_forward_decl/out/unsafe/opaque_forward_decl.rs
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/Cpp2Rust/cpp2rust/pull/225/{{ revealButtonHref }}
https://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-2e0e55537fb1821073509646ebd15262ded08dd07b0a1e1afe56a144aa6c473f
tests/ub/int_to_pointer_out_of_range.chttps://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-372a9b8b75ce40add38e2e965161a7cb117263a5f1ab01e8f7592484ebb03266
View file https://github.com/Cpp2Rust/cpp2rust/blob/2b147de1e09c9cdd14f2787fb9d2c8d32d99145d/tests/ub/int_to_pointer_out_of_range.c
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/Cpp2Rust/cpp2rust/pull/225/{{ revealButtonHref }}
tests/ub/int_to_pointer_random.chttps://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-87a9d950555dcff71b2f2add2b0f6dfc9496a24dde90f3f4887ed6e94a4dad6e
View file https://github.com/Cpp2Rust/cpp2rust/blob/2b147de1e09c9cdd14f2787fb9d2c8d32d99145d/tests/ub/int_to_pointer_random.c
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/Cpp2Rust/cpp2rust/pull/225/{{ revealButtonHref }}
tests/ub/out/refcount/int_to_pointer_out_of_range.rshttps://github.com/Cpp2Rust/cpp2rust/pull/225/files#diff-387067615e35688c69dd7b6bdb9a31d152ca2fbb68d999e3d89dc97b34414eb2
View file https://github.com/Cpp2Rust/cpp2rust/blob/2b147de1e09c9cdd14f2787fb9d2c8d32d99145d/tests/ub/out/refcount/int_to_pointer_out_of_range.rs
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/Cpp2Rust/cpp2rust/pull/225/{{ revealButtonHref }}
Please reload this pagehttps://github.com/Cpp2Rust/cpp2rust/pull/225/files
Please reload this pagehttps://github.com/Cpp2Rust/cpp2rust/pull/225/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.