Skip to content
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

Coolthulhu fix null tool #2

Closed

Conversation

mugling
Copy link
Contributor

@mugling mugling commented Jun 4, 2016

No description provided.

i2amroy and others added 30 commits May 20, 2016 01:58
* PWD is a special vairable of the shell, do not modify it directly.

* In case the users installed thirdparty utilities, which may cause the
  failure of scripts like /etc/bashrc_Apple_Terminal loaded by the Apple
  terminal, we reset the PATH with a sane value.

* Reformat the code with a better style.
With multi processor compilation enabled, it is even slower than when disabled. And it produces extreme heat. Not good.
Because of previous changes to the volume of stacked items, the volume
added by picking something up is not a function of the item's volume,
but a function of the current inventory and the item being picked up.

- Change the function's signature to receive a const item & rather than
an int
- Update the callers of this function to match the changed signature
In the previous commit, the function signature of Character::can_pickVolume
was changed to address a bug. Because of the similarity of the purposes of these
functions, it would be inconsistent and ugly for the callers if their signatures
were different.

- Change the signature of Character::can_pickWeight to accept a
const item & rather than an int
- Update this function's callers to reflect the changed signature
@mugling mugling closed this Jun 4, 2016
@mugling mugling deleted the Coolthulhu-fix-null-tool branch June 4, 2016 17:58
Coolthulhu pushed a commit that referenced this pull request Jul 4, 2016
Support inheritance for ARMOR and TOOL_ARMOR
Coolthulhu added a commit that referenced this pull request Aug 5, 2016
Item electricity resistance changes #2
Coolthulhu pushed a commit that referenced this pull request Nov 2, 2016
Coolthulhu pushed a commit that referenced this pull request Feb 6, 2017
lint: add rule to format monstergroup:monster:conditions
Coolthulhu pushed a commit that referenced this pull request Aug 1, 2017
Coolthulhu pushed a commit that referenced this pull request Aug 4, 2017
Coolthulhu pushed a commit that referenced this pull request Aug 11, 2017
Updated rules and examples for `terrain` and `furniture` with `harvest_by_season`.
Coolthulhu pushed a commit that referenced this pull request Aug 26, 2017
Coolthulhu pushed a commit to Coolthulhu/Cataclysm that referenced this pull request Oct 6, 2017
Coolthulhu pushed a commit to Coolthulhu/Cataclysm that referenced this pull request Oct 12, 2017
Coolthulhu pushed a commit to Coolthulhu/Cataclysm that referenced this pull request Feb 17, 2018
Coolthulhu pushed a commit to Coolthulhu/Cataclysm that referenced this pull request Jul 7, 2018
Coolthulhu pushed a commit to Coolthulhu/Cataclysm that referenced this pull request Jul 7, 2018
@Trokinos Trokinos mentioned this pull request Oct 30, 2020
Coolthulhu pushed a commit that referenced this pull request Oct 31, 2020
The function `are_requirements_nearby` accesses `player::backlog::front()`, which causes UB when the `backlog` list is empty.

This is usually checked by the caller, but there is at least one way to reach this function without that check:

```
#2  0x000000000083dfaa in string_id<activity_type>::operator== (rhs=..., this=0xdf1b460) at src/player_activity.h:93
#3  are_requirements_nearby (loot_spots=std::vector of length 21, capacity 32 = {...}, needed_things=..., p=..., activity_to_restore=..., in_loot_zones=true, src_loc=...)
    at src/activity_item_handling.cpp:1113
#4  0x0000000000843a46 in generic_multi_activity_check_requirement (p=..., act_id=..., act_info=..., src=..., src_loc=...,
    src_set=std::unordered_set with 1 element = {...}, check_only=false) at src/activity_item_handling.cpp:2676
#5  0x0000000000852813 in generic_multi_activity_handler (act=..., p=..., check_only=check_only@entry=false) at src/activity_item_handling.cpp:2885
#6  0x0000000000800896 in activity_handlers::multiple_butcher_do_turn (act=<optimized out>, p=<optimized out>) at src/activity_handlers.cpp:3822
#7  0x000000000082b248 in std::_Function_handler<void (player_activity*, player*), void (*)(player_activity*, player*)>::_M_invoke(std::_Any_data const&, player_activity*&&, player*&&) (__functor=..., __args#0=<optimized out>, __args#1=<optimized out>) at /usr/include/c++/8/bits/std_function.h:88
#8  0x00000000008630e3 in std::function<void (player_activity*, player*)>::operator()(player_activity*, player*) const (this=<optimized out>, __args#0=<optimized out>,
    __args#0@entry=0xdf1b330, __args#1=<optimized out>, __args#1@entry=0xdf1ae50) at /usr/include/c++/8/bits/std_function.h:260
#9  0x0000000000860306 in activity_type::call_do_turn (this=0x2c3c930, act=act@entry=0xdf1b330, p=p@entry=0xdf1ae50) at src/activity_type.cpp:118
#10 0x00000000014a968b in player_activity::do_turn (this=this@entry=0xdf1b330, p=...) at src/player_activity.cpp:237
#11 0x00000000013092a4 in npc::do_player_activity (this=this@entry=0xdf1ae50) at src/npcmove.cpp:3299
#12 0x0000000001322a07 in npc::execute_action (this=this@entry=0xdf1ae50, action=<optimized out>, action@entry=npc_player_activity) at src/npcmove.cpp:1237
#13 0x000000000132690a in npc::move (this=this@entry=0xdf1ae50) at src/npcmove.cpp:907
```

This adds a simple check within the function.
@Trokinos Trokinos mentioned this pull request Nov 3, 2020
@flesh420 flesh420 mentioned this pull request Oct 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants