{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":794214567,"defaultBranch":"master","name":"logos","ownerLogin":"Jakobeha","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2024-04-30T17:15:56.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/32147996?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1714626485.0","currentOid":""},"activityList":{"items":[{"before":"394daa539dd2525ea035a341732b843aae1d6d21","after":"9168b767fffaa9c7d1dc438822cef815d677ce02","ref":"refs/heads/sub-workspace","pushedAt":"2024-05-03T08:23:30.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"Jakobeha","name":"Jakob Hain","path":"/Jakobeha","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32147996?s=80&v=4"},"commit":{"message":"@WIP fixed lexer macros, it builds","shortMessageHtmlLink":"@wip fixed lexer macros, it builds"}},{"before":"59bac25504671401e192768827d026c3d17d0032","after":"a9ad714b18b4daf494db66d148cc2d32e38ad664","ref":"refs/heads/fix-clone","pushedAt":"2024-05-02T05:14:34.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Jakobeha","name":"Jakob Hain","path":"/Jakobeha","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32147996?s=80&v=4"},"commit":{"message":"fix `Lexer::clone` leak and UB + tests\n\n`Lexer::clone` shouldn't clone the inner `ManuallyDrop`, because doing so clones the inner value, which is moved out in `Lexer::next`.\n\nThis causes use-after-free if the lexer is cloned after the last-returned token is dropped, especially if the token contains an overridden implementation of `Clone` (such as `Rc`) that tries to read the dropped data.\n\nIt causes a memory leak if the token contains a heap-allocated value, because cloning makes a new allocation. This allocation is in the `ManuallyDrop` and it's guaranteed to be overridden before the call to `ManuallyDrop::take`, so it's never freed.\n\nAnother thing: https://github.com/maciejhirsz/logos/issues/263 (make `Lexer` implement `Copy`) probably should be added (referencing here because it looks like the issue has been forgotten).","shortMessageHtmlLink":"fix Lexer::clone leak and UB + tests"}},{"before":"c0a047aec780f7805c36f2fab31bbdd6b7c8b666","after":"59bac25504671401e192768827d026c3d17d0032","ref":"refs/heads/fix-clone","pushedAt":"2024-05-02T05:09:44.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Jakobeha","name":"Jakob Hain","path":"/Jakobeha","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32147996?s=80&v=4"},"commit":{"message":"fix `Lexer::clone` leak and UB + tests\n\n`Lexer::clone` shouldn't clone the inner `ManuallyDrop`, because doing so clones the inner value, which is moved out in `Lexer::next`.\n\nThis causes use-after-free if the lexer is cloned after the last-returned token is dropped, especially if the token contains an overridden implementation of `Clone` (such as `Rc`) that tries to read the dropped data.\n\nIt causes a memory leak if the token contains a heap-allocated value, because cloning makes a new allocation. This allocation is in the `ManuallyDrop` and it's guaranteed to be overridden before the call to `ManuallyDrop::take`, so it's never freed.\n\nIdk if also `ManuallyDrop` needs to be replaced with `MaybeUninit`, that's another solution but I don't think it's necessary. Another thing I didn't add is https://github.com/maciejhirsz/logos/issues/263 (make `Lexer` `Copy`), although it probably should be added (referencing here because it looks like the issue has been forgotten).","shortMessageHtmlLink":"fix Lexer::clone leak and UB + tests"}},{"before":null,"after":"c0a047aec780f7805c36f2fab31bbdd6b7c8b666","ref":"refs/heads/fix-clone","pushedAt":"2024-05-02T05:08:05.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Jakobeha","name":"Jakob Hain","path":"/Jakobeha","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32147996?s=80&v=4"},"commit":{"message":"fix `Lexer::clone` leak and UB + tests\n\n`Lexer::clone` shouldn't clone the inner `ManuallyDrop`, because doing so clones the inner value, which is moved out in `Lexer::next`.\n\nThis causes use-after-free if the lexer is cloned after the last-returned token is dropped, especially if the token contains an overridden implementation of `Clone` (such as `Rc`) that tries to read the dropped data.\n\nIt causes a memory leak if the token contains a heap-allocated value, because cloning makes a new allocation. This allocation is in the `ManuallyDrop` and it's guaranteed to be overridden before the call to `ManuallyDrop::take`, so it's never freed.\n\nIdk if also `ManuallyDrop` needs to be replaced with `MaybeUninit`, that's another solution but I don't think it's necessary. Another thing I didn't add is https://github.com/maciejhirsz/logos/issues/263 (make `Lexer` `Copy`), although it probably should be added (referencing here because it looks like the issue has been forgotten).","shortMessageHtmlLink":"fix Lexer::clone leak and UB + tests"}},{"before":"b4d3d53b296819785ea32c75865222d05d1065f1","after":"788288153281e88d1181339c45a3f395314a089b","ref":"refs/heads/master","pushedAt":"2024-04-30T22:46:24.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"Jakobeha","name":"Jakob Hain","path":"/Jakobeha","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32147996?s=80&v=4"},"commit":{"message":"make agnostic patterns go before enum + `FilterSkip`\n\n\"Agnostic\" patterns (those not defined for any specific token) previously had to be added to some Unit token.\nNow they are required to be added to the `Token` enum itself.\n\nThis also adds `FilterSkip` which either skips or returns an error, but never a token. It's useful for block comments.\n\nLastly, added some more documentation to the handbook.","shortMessageHtmlLink":"make agnostic patterns go before enum + FilterSkip"}},{"before":null,"after":"394daa539dd2525ea035a341732b843aae1d6d21","ref":"refs/heads/sub-workspace","pushedAt":"2024-04-30T22:46:16.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"Jakobeha","name":"Jakob Hain","path":"/Jakobeha","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32147996?s=80&v=4"},"commit":{"message":"sub-workspace","shortMessageHtmlLink":"sub-workspace"}},{"before":"142788e11e10cf9bd081871f29de7b847e0370d2","after":"b4d3d53b296819785ea32c75865222d05d1065f1","ref":"refs/heads/master","pushedAt":"2024-04-30T22:44:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Jakobeha","name":"Jakob Hain","path":"/Jakobeha","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/32147996?s=80&v=4"},"commit":{"message":"make agnostic patterns go before enum + `FilterSkip`\n\n\"Agnostic\" patterns (those not defined for any specific token) previously had to be added to some Unit token.\nNow they are required to be added to the `Token` enum itself.\n\nThis also adds `FilterSkip` which either skips or returns an error, but never a token. It's useful for block comments.\n\nLastly, added some more documentation to the handbook.","shortMessageHtmlLink":"make agnostic patterns go before enum + FilterSkip"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEQIv4lgA","startCursor":null,"endCursor":null}},"title":"Activity ยท Jakobeha/logos"}