เดธเตเดดเตโเดธเต เดเตเดกเต เดนเตเดธเตเดฑเตเดฑเดฟเดเดเดพเดฏเดฟ GitHub เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดธเตเดซเตเดฑเตเดฑเตโเดตเตเดฏเตผ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดเดฐเต เดตเดฟเดคเดฐเดฃเด เดเตเดฏเตเดค เดตเตเดฌเต เดธเตเดตเดจเดฎเดพเดฃเต เดเตเดฐเดพเดตเดฟเดธเต CI. เดฎเตเดเดณเดฟเดฒเตเดณเตเดณ เดเดชเตเดชเดฑเตเดฑเตเดฑเดฟเดเดเต เดธเดพเดนเดเดฐเตเดฏเดเตเดเตพเดเตเดเต เดชเตเดฑเดฎเต, เดตเดฟเดชเตเดฒเดฎเดพเดฏ เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดเดชเตเดทเดจเตเดเดณเดฟเดฒเตเดเตเดเต เดจเดฟเดเตเดเดณเตเดเต เดธเตเดตเดจเตเดคเด เดจเดจเตเดฆเดฟ เดเตเตผเดเตเดเดพเตป เดเดดเดฟเดฏเตเด. เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ PPSSPP เดเตเดกเต เดเดฆเดพเดนเดฐเดฃเด เดเดชเดฏเตเดเดฟเดเตเดเต PVS-Studio-เดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป เดเดเตเดเตพ เดเตเดฐเดพเดตเดฟเดธเต CI เดเตเดฐเดฎเตเดเดฐเดฟเดเตเดเตเด.
เดเดฎเตเดเด
เดเตเดฐเดพเดตเดฟเดธเต เดธเดฟเด เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเดจเตเดจเต
เดเดเตเดเตพเดเตเดเต เดเดตเดถเตเดฏเดฎเตเดณเตเดณ เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดธเตเดฅเดฟเดคเดฟ เดเตเดฏเตเดฏเตเดจเตเดจ GitHub-เตฝ เดเดเตเดเตพเดเตเดเต เดเดฐเต เดถเตเดเดฐเด เดเดตเดถเตเดฏเดฎเดพเดฃเต, เดเตเดเดพเดคเต PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเตเดฏเตเดเตเดเตเดณเตเดณ เดเดฐเต เดเตเดฏเตเด (เดจเดฟเดเตเดเตพเดเตเดเต เดฒเดญเดฟเดเตเดเตเด
เดจเดฎเตเดเตเดเต เดธเตเดฑเตเดฑเดฟเดฒเตเดเตเดเต เดชเตเดเดพเด
เดเตเดธเตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ, เดเดพเตป PPSSPP เดซเตเตผเดเตเดเต เดเตเดฏเตเดคเต.
เดเดเตเดเตพ เดถเตเดเดฐเดฟเดเตเดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจ เดถเตเดเดฐเด เดเดเตเดเตพ เดธเดเตเดตเดฎเดพเดเตเดเตเดจเตเดจเต:
เดจเดฟเดฒเดตเดฟเตฝ, เดเตเดฐเดพเดตเดฟเดธเต เดธเดฟเดเดเตเดเต เดเดเตเดเดณเตเดเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ, เดเดพเดฐเดฃเด เดเตเดเตเดเดฟเดเดจเดฟเตผเดฎเตเดฎเดพเดฃเดคเตเดคเดฟเดจเตเดณเตเดณ เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเดณเตเดจเตเดจเตเดฎเดฟเดฒเตเดฒ. เด
เดคเดฟเดจเดพเตฝ เดเตเตบเดซเดฟเดเดฑเตเดทเดจเตเดณเตเดณ เดธเดฎเดฏเดฎเดพเดฃเดฟเดคเต.
เดตเดฟเดถเดเดฒเดจ เดธเดฎเดฏเดคเตเดคเต, เดเดฟเดฒ เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เดเดเตเดเตพเดเตเดเต เดเดชเดฏเตเดเดชเตเดฐเดฆเดฎเดพเดเตเด, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดชเดฟเดตเดฟเดเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเตเดฏเตเดเตเดเตเดณเตเดณ เดเต, เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเดฒเดฟเตฝ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเดจเตเดจเดคเต เด เดญเดฟเดเดพเดฎเตเดฏเดฎเดฒเตเดฒ. เด เดคเดฟเดจเดพเตฝ เดเตเดฐเดพเดตเดฟเดธเต เดธเดฟเดเดฏเดฟเดฒเต เดฌเดฟเตฝเดกเต เดเตเดฐเดฎเตเดเดฐเดฃเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดเตปเดตเดฏเตเตบเดฎเตเดจเตเดฑเต เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เดเตเตผเดเตเดเดพเด:
เดเดเตเดเตพเดเตเดเต เดตเตเดฃเตเดเดคเต:
- PVS_USERNAME - เดเดชเดฏเตเดเตเดคเตเดจเดพเดฎเด
- PVS_KEY - เดเต
- MAIL_USER - เดฑเดฟเดชเตเดชเตเตผเดเตเดเต เด เดฏเดฏเตเดเตเดเดพเตป เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดเดฎเตเดฏเดฟเตฝ
- MAIL_PASSWORD - เดเดฎเตเดฏเดฟเตฝ เดชเดพเดธเตโเดตเตเดกเต
เด เดตเดธเดพเดจเดคเตเดคเต เดฐเดฃเตเดเตเดฃเตเดฃเด เดเดชเตเดทเดฃเตฝ เดเดฃเต. เดฎเตเดฏเดฟเตฝ เดตเดดเดฟ เดซเดฒเดเตเดเตพ เด เดฏเดฏเตเดเตเดเดพเตป เดเดต เดเดชเดฏเตเดเดฟเดเตเดเตเด. เดจเดฟเดเตเดเตพเดเตเดเต เดฎเดฑเตเดฑเตเดฐเต เดฐเตเดคเดฟเดฏเดฟเตฝ เดฑเดฟเดชเตเดชเตเตผเดเตเดเต เดตเดฟเดคเดฐเดฃเด เดเตเดฏเตเดฏเดฃเดฎเตเดเตเดเดฟเตฝ, เด เดต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดฃเตเดเดคเดฟเดฒเตเดฒ.
เด เดคเดฟเดจเดพเตฝ, เดเดเตเดเตพเดเตเดเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เดเดเตเดเตพ เดเตเตผเดคเตเดคเต:
เดเดจเดฟ เดจเดฎเตเดเตเดเต เดเดฐเต เดซเดฏเตฝ เดเดฃเตเดเดพเดเตเดเดพเด .travis.yml เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดจเตเดฑเต เดฑเตเดเตเดเดฟเตฝ เดธเตเดฅเดพเดชเดฟเดเตเดเตเด. เดชเดฟโเดชเดฟโเดเดธเตโเดเดธเตโเดชเดฟโเดชเดฟเดเตเดเต เดเดคเดฟเดจเดเด เดเตเดฐเดพเดตเดฟเดธเต เดธเดฟโเดเดฏเตโเดเตเดเดพเดฏเดฟ เดเดฐเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดซเดฏเตฝ เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเดคเต เดตเดณเดฐเต เดตเดฒเตเดคเตเด เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต เดชเตเตผเดฃเตเดฃเดฎเดพเดฏเตเด เด
เดจเตเดฏเตเดเตเดฏเดฎเดฒเตเดฒเดพเดคเตเดคเดคเตเดฎเดพเดฃเต, เด
เดคเดฟเดจเดพเตฝ เดเดเตเดเตพเดเตเดเต เดเดคเต เดตเดณเดฐเต เดฒเดณเดฟเดคเดฎเดพเดเตเดเตเดเดฏเตเด เด
เดเดฟเดธเตเดฅเดพเดจ เดเดเดเดเตเดเตพ เดฎเดพเดคเตเดฐเด เดเดชเตเดเตเดทเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต.
เดเดฆเตเดฏเด, เดจเดฎเตเดเตเดเต เดญเดพเดท, เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเดจเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจ เดเดฌเตเดฃเตเดเต เดฒเดฟเดจเดเตเดธเดฟเดจเตเดฑเต เดชเดคเดฟเดชเตเดชเต, เดฌเดฟเตฝเดกเดฟเดจเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดชเดพเดเตเดเตเดเตเดเตพ เดเดจเตเดจเดฟเดต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเดพเด:
language: cpp
dist: xenial
addons:
apt:
update: true
packages:
- ant
- aria2
- build-essential
- cmake
- libgl1-mesa-dev
- libglu1-mesa-dev
- libsdl2-dev
- pv
- sendemail
- software-properties-common
sources:
- sourceline: 'ppa:ubuntu-toolchain-r/test'
- sourceline: 'ppa:ubuntu-sdk-team/ppa'
เดฒเดฟเดธเตโเดฑเตเดฑเต เดเตเดฏเตโเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดเดฒเตเดฒเดพ เดชเดพเดเตเดเตเดเตเดเดณเตเด PPSSPP-เดฏเตโเดเตเดเต เดฎเดพเดคเตเดฐเดฎเดพเดฏเดฟ เดเดตเดถเตเดฏเดฎเดพเดฃเต.
เดเดชเตเดชเตเตพ เดเดเตเดเตพ เด เดธเดเดฌเตเดฒเดฟ เดฎเดพเดเตเดฐเดฟเดเตเดธเต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต:
matrix:
include:
- os: linux
compiler: "gcc"
env: PPSSPP_BUILD_TYPE=Linux PVS_ANALYZE=Yes
- os: linux
compiler: "clang"
env: PPSSPP_BUILD_TYPE=Linux
เดตเดฟเดญเดพเดเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเต เดเตเดฑเดเตเดเตเดเตเดเดฟ เดฎเดพเดเตเดฐเดฟเดเตเดธเต. เดเตเดฐเดพเดตเดฟเดธเต เดธเดฟเดเดฏเดฟเตฝ, เดฌเดฟเตฝเดกเต เดเดชเตโเดทเดจเตเดเตพ เดธเตเดทเตโเดเดฟเดเตเดเดพเตป เดฐเดฃเตเดเต เดตเดดเดฟเดเดณเตเดฃเตเดเต: เดเดฆเตเดฏเดคเตเดคเตเดคเต เดเดเดชเตเดฒเดฑเตเดเตพ, เดเดชเตเดชเดฑเตเดฑเตเดฑเดฟเดเดเต เดธเดฟเดธเตเดฑเตเดฑเด เดคเดฐเดเตเดเตพ, เดเตปเดตเดฏเตเตบเดฎเตเดจเตเดฑเต เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เดฎเตเดคเดฒเดพเดฏเดตเดฏเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเดจเตเดจเดคเดพเดฃเต, เด
เดคเดฟเดจเตเดถเตเดทเด เดธเดพเดงเตเดฏเดฎเดพเดฏ เดเดฒเตเดฒเดพ เดเตเดฎเตเดชเดฟเดจเตเดทเดจเตเดเดณเตเดเตเดฏเตเด เดเดฐเต เดฎเดพเดเตเดฐเดฟเดเตเดธเต เดธเตเดทเตเดเดฟเดเตเดเดชเตเดชเตเดเตเดจเตเดจเต; เดฐเดฃเตเดเดพเดฎเดคเตเดคเตเดคเต เดฎเดพเดเตเดฐเดฟเดเตเดธเดฟเดจเตเดฑเต เดตเตเดฏเดเตเดคเดฎเดพเดฏ เดธเตเดเดจเดฏเดพเดฃเต. เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เดจเดฟเดเตเดเตพเดเตเดเต เด เดฐเดฃเตเดเต เดธเดฎเตเดชเดจเดเตเดเดณเตเด เดธเดเดฏเตเดเดฟเดชเตเดชเดฟเดเตเดเต เดเดฐเต เด
เดฆเตเดตเดฟเดคเตเดฏ เดเตเดธเต เดเตเตผเดเตเดเดพเด, เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ, เดตเดฟเดญเดพเดเด เดเดชเดฏเตเดเดฟเดเตเดเต เด
เดคเต เดเดดเดฟเดตเดพเดเตเดเตเด เดชเตเดเตเดคเตเดคเดฟเดฏเดฟเดเตเดเดฟเดฒเตเดฒ. เดจเดฟเดเตเดเตพเดเตเดเต เดเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเตเดเตเดคเตฝ เดตเดพเดฏเดฟเดเตเดเดพเด
เดชเตเดฐเตเดเดเตเดฑเตเดฑเต-เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เด เดธเดเดฌเตเดฒเดฟ เดจเดฟเตผเดฆเตเดฆเตเดถเดเตเดเตพ เดจเตฝเดเตเด เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดถเตเดทเดฟเดเตเดเตเดจเตเดจเดคเต:
before_install:
- travis_retry bash .travis.sh travis_before_install
install:
- travis_retry bash .travis.sh travis_install
script:
- bash .travis.sh travis_script
after_success:
- bash .travis.sh travis_after_success
เดเดฐเต เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเดจเตเดฑเต เดเตเดตเดฟเดคเดคเตเดคเดฟเดจเตเดฑเต เดตเดฟเดตเดฟเดง เดเดเตเดเดเตเดเดณเดฟเตฝ เดจเดฟเดเตเดเดณเตเดเต เดธเตเดตเดจเตเดคเด เดเดฎเดพเตปเดกเตเดเตพ เดเตเตผเดเตเดเดพเตป เดเตเดฐเดพเดตเดฟเดธเต เดธเดฟเด เดจเดฟเดเตเดเดณเต เด
เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต. เดตเดฟเดญเดพเดเด เดฎเตเดฎเตเดชเต_เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเด เดชเดพเดเตเดเตเดเตเดเตพ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเดฟ. เดชเดฟเดจเตเดจเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเด, เดเดคเต เดฒเดฟเดธเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดชเดพเดเตเดเตเดเตเดเดณเตเดเต เดเตปเดธเตเดฑเตเดฑเดพเดณเตเดทเดจเต เดชเดฟเดจเตเดคเตเดเดฐเตเดจเตเดจเต addons.aptเดเดเตเดเตพ เดฎเตเดเดณเดฟเตฝ เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเดคเต. เด
เดธเดเดฌเตเดฒเดฟ เดคเดจเตเดจเต เดจเดเดเตเดเตเดจเตเดจเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต. เดเดฒเตเดฒเดพเด เดถเดฐเดฟเดฏเดพเดฏเดฟเดฐเตเดจเตเดจเตเดตเตเดเตเดเดฟเตฝ, เดจเดฎเตเดฎเตพ เดธเตเดตเดฏเด เดเดฃเตเดเตเดคเตเดคเตเด เดถเตเดทเด_เดตเดฟเดเดฏเด (เดเดเตเดเตพ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดเต เดตเดฟเดถเดเดฒเดจเด เดจเดเดคเตเดคเตเดจเตเดจเดคเต เด เดตเดฟเดญเดพเดเดคเตเดคเดฟเดฒเดพเดฃเต). เดเดตเดฏเตเดฒเตเดฒเดพเด เดชเดฐเดฟเดทเตโเดเตเดเดฐเดฟเดเตเดเดพเดตเตเดจเตเดจ เดเดเตเดเดเตเดเดณเดฒเตเดฒ, เดจเดฟเดเตเดเตพเดเตเดเต เดเตเดเตเดคเตฝ เดเดตเดถเตเดฏเดฎเตเดฃเตเดเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพ เดจเตเดเตเดเดฃเด
เดตเดพเดฏเดจเดฏเตเดเต เดเดณเตเดชเตเดชเดคเตเดคเดฟเดจเดพเดฏเดฟ, เดเดฎเดพเตปเดกเตเดเตพ เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเดฟเตฝ เดธเตเดฅเดพเดชเดฟเดเตเดเต .travis.sh, เดเดคเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดฑเตเดเตเดเดฟเตฝ เดธเตเดฅเดพเดชเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.
เด เดคเดฟเดจเดพเตฝ เดเดเตเดเตพเดเตเดเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดซเดฏเตฝ เดเดฃเตเดเต .travis.yml:
language: cpp
dist: xenial
addons:
apt:
update: true
packages:
- ant
- aria2
- build-essential
- cmake
- libgl1-mesa-dev
- libglu1-mesa-dev
- libsdl2-dev
- pv
- sendemail
- software-properties-common
sources:
- sourceline: 'ppa:ubuntu-toolchain-r/test'
- sourceline: 'ppa:ubuntu-sdk-team/ppa'
matrix:
include:
- os: linux
compiler: "gcc"
env: PVS_ANALYZE=Yes
- os: linux
compiler: "clang"
before_install:
- travis_retry bash .travis.sh travis_before_install
install:
- travis_retry bash .travis.sh travis_install
script:
- bash .travis.sh travis_script
after_success:
- bash .travis.sh travis_after_success
เดชเดพเดเตเดเตเดเตเดเตพ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดฎเตเดชเต, เดเดเตเดเตพ เดธเดฌเตเดฎเตเดกเตเดฏเตเดณเตเดเตพ เด เดชเตเดกเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเด. PPSSPP เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดเดคเต เดเดตเดถเตเดฏเดฎเดพเดฃเต. เดเดคเดฟเดฒเตเดเตเดเต เดเดฆเตเดฏ เดซเดเดเตเดทเตป เดเตเตผเดเตเดเดพเด .travis.sh (เดตเดฟเดชเตเดฒเตเดเดฐเดฃเด เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด):
travis_before_install() {
git submodule update --init --recursive
}
เดเตเดฐเดพเดตเดฟเดธเต เดธเดฟเดเดฏเดฟเตฝ เดชเดฟเดตเดฟเดเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเตเดฏเตเดเต เดเดเตเดเตเดฎเดพเดฑเตเดฑเดฟเดเต เดฒเตเดเตเดเต เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดฒเตเดเตเดเต เดเดเตเดเตพ เดเดชเตเดชเตเตพ เดจเตเดฐเดฟเดเตเดเต เดตเดฐเตเดจเตเดจเต. เดเดฆเตเดฏเด เดจเดฎเตเดฎเตพ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ PVS-Studio เดชเดพเดเตเดเตเดเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดฃเด:
travis_install() {
if [ "$CXX" = "g++" ]; then
sudo apt-get install -qq g++-4.8
fi
if [ "$PVS_ANALYZE" = "Yes" ]; then
wget -q -O - https://files.viva64.com/etc/pubkey.txt
| sudo apt-key add -
sudo wget -O /etc/apt/sources.list.d/viva64.list
https://files.viva64.com/etc/viva64.list
sudo apt-get update -qq
sudo apt-get install -qq pvs-studio
libio-socket-ssl-perl
libnet-ssleay-perl
fi
download_extract
"https://cmake.org/files/v3.6/cmake-3.6.2-Linux-x86_64.tar.gz"
cmake-3.6.2-Linux-x86_64.tar.gz
}
เดเดเดเตเดเดฟเดจเตเดฑเต เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ เดเตเดฐเดพเดตเดฟเดธเต_เดเตปเดธเตเดฑเตเดฑเดพเตพ เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฎเตเดเตเดเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดเดฎเตเดชเตเดฒเดฑเตเดเตพ เดเดเตเดเตพ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดจเตเดจเต. เด เดชเตเดชเตเตพ เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดเดฃเตเดเตเดเดฟเตฝ $PVS_ANALYZE เดฎเตเดฒเตเดฏเด เดธเดเดญเดฐเดฟเดเตเดเตเดจเตเดจเต เด เดคเต (เดเดเตเดเตพ เด เดคเต เดตเดฟเดญเดพเดเดคเตเดคเดฟเตฝ เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเต เด เดฏเดเตเดเตเด เดฌเดฟเตฝเดกเต เดฎเดพเดเตเดฐเดฟเดเตเดธเต เดเตเตบเดซเดฟเดเดฑเตเดทเตป เดธเดฎเดฏเดคเตเดคเต), เดเดเตเดเตพ เดชเดพเดเตเดเตเดเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดจเตเดจเต pvs-studio. เดเดคเตเดเตเดเดพเดคเต, เดชเดพเดเตเดเตเดเตเดเดณเตเด เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต libio-socket-ssl-perl ะธ libnet-ssley-perlเดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดฎเตเดฏเดฟเดฒเดฟเดเดเต เดซเดฒเดเตเดเตพเดเตเดเต เด เดต เดเดตเดถเตเดฏเดฎเดพเดฃเต, เด เดคเดฟเดจเดพเตฝ เดจเดฟเดเตเดเดณเตเดเต เดฑเดฟเดชเตเดชเตเตผเดเตเดเต เดจเตฝเดเตเดจเตเดจเดคเดฟเดจเต เดจเดฟเดเตเดเตพ เดฎเดฑเตเดฑเตเดฐเต เดฐเตเดคเดฟ เดคเดฟเดฐเดเตเดเตเดเตเดคเตเดคเดฟเดเตเดเตเดฃเตเดเตเดเตเดเดฟเตฝ เด เดต เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ.
เดซเดเดเตเดทเตป download_extract เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเด เดเตผเดเตเดเตเดตเต เดกเตเตบเดฒเตเดกเต เดเตเดฏเตเดฏเตเดเดฏเตเด เด เตบเดชเดพเดเตเดเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต:
download_extract() {
aria2c -x 16 $1 -o $2
tar -xf $2
}
เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดเดฐเตเดฎเดฟเดเตเดเต เดเตเตผเดเตเดเตเดฃเตเด เดธเดฎเดฏเดฎเดพเดฃเดฟเดคเต. เดตเดฟเดญเดพเดเดคเตเดคเดฟเดฒเดพเดฃเต เดเดคเต เดธเดเดญเดตเดฟเดเตเดเตเดจเตเดจเดคเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต:
travis_script() {
if [ -d cmake-3.6.2-Linux-x86_64 ]; then
export PATH=$(pwd)/cmake-3.6.2-Linux-x86_64/bin:$PATH
fi
CMAKE_ARGS="-DHEADLESS=ON ${CMAKE_ARGS}"
if [ "$PVS_ANALYZE" = "Yes" ]; then
CMAKE_ARGS="-DCMAKE_EXPORT_COMPILE_COMMANDS=On ${CMAKE_ARGS}"
fi
cmake $CMAKE_ARGS CMakeLists.txt
make
}
เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เด เดตเดฐเดฟเดเตพ เดเดดเดฟเดเต เดเดคเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดเดฐเต เดฏเดฅเดพเตผเดคเตเดฅ เดเตเตบเดซเดฟเดเดฑเตเดทเดจเดพเดฃเต:
if [ "$PVS_ANALYZE" = "Yes" ]; then
CMAKE_ARGS="-DCMAKE_EXPORT_COMPILE_COMMANDS=On ${CMAKE_ARGS}"
fi
เดเตเดกเดฟเดจเตเดฑเต เด เดตเดฟเดญเดพเดเดคเตเดคเดฟเตฝ เดเดเตเดเตพ เดธเดเตเดเตเดเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต cmake เดเดเดชเตเดฒเตเดทเตป เดเดฎเดพเตปเดกเตเดเตพ เดเดฏเดฑเตเดฑเตเดฎเดคเดฟ เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดซเตเดฒเดพเดเต. เดเดฐเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดเต เดเตเดกเต เด
เดจเดฒเตเดธเดฑเดฟเดจเต เดเดคเต เดเดตเดถเตเดฏเดฎเดพเดฃเต. เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเตเดเตเดคเตฝ เดตเดพเดฏเดฟเดเตเดเดพเด "
เด เดธเดเดฌเตเดฒเดฟ เดตเดฟเดเดฏเดเดฐเดฎเดพเดฃเตเดเตเดเดฟเตฝ, เดเดเตเดเตพ เดเดคเตเดคเดฟเดเตเดเตเดฐเตเด เดถเตเดทเด_เดตเดฟเดเดฏเด, เดเดเตเดเตพ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดเต เดตเดฟเดถเดเดฒเดจเด เดจเดเดคเตเดคเตเดจเตเดจเดฟเดเดคเตเดคเต:
travis_after_success() {
if [ "$PVS_ANALYZE" = "Yes" ]; then
pvs-studio-analyzer credentials $PVS_USERNAME $PVS_KEY -o PVS-Studio.lic
pvs-studio-analyzer analyze -j2 -l PVS-Studio.lic
-o PVS-Studio-${CC}.log
--disableLicenseExpirationCheck
plog-converter -t html PVS-Studio-${CC}.log -o PVS-Studio-${CC}.html
sendemail -t [email protected]
-u "PVS-Studio $CC report, commit:$TRAVIS_COMMIT"
-m "PVS-Studio $CC report, commit:$TRAVIS_COMMIT"
-s smtp.gmail.com:587
-xu $MAIL_USER
-xp $MAIL_PASSWORD
-o tls=yes
-f $MAIL_USER
-a PVS-Studio-${CC}.log PVS-Studio-${CC}.html
fi
}
เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดตเดฐเดฟเดเตพ เดจเดฎเตเดเตเดเต เดธเตเดเตเดทเตเดฎเดฎเดพเดฏเดฟ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเด:
pvs-studio-analyzer credentials $PVS_USERNAME $PVS_KEY -o PVS-Studio.lic
pvs-studio-analyzer analyze -j2 -l PVS-Studio.lic
-o PVS-Studio-${CC}.log
--disableLicenseExpirationCheck
plog-converter -t html PVS-Studio-${CC}.log -o PVS-Studio-${CC}.html
เดเตเดฐเดพเดตเดฟเดธเต เดธเดฟเด เดเตปเดตเดฏเตเตบเดฎเตเดจเตเดฑเต เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเดฎเตเดชเตเตพ เดคเตเดเดเตเดเดคเตเดคเดฟเตฝ เดคเดจเตเดจเต เดเดเตเดเตพ เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดฟเดฏ เดเดชเดฏเตเดเตเดคเตเดจเดพเดฎเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเด เดเตเดฏเดฟเตฝ เดจเดฟเดจเตเดจเตเด เดเดฆเตเดฏ เดตเดฐเดฟ เดเดฐเต เดฒเตเดธเตปเดธเต เดซเดฏเตฝ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเต.
เดฐเดฃเตเดเดพเดฎเดคเตเดคเต เดตเดฐเดฟ เดจเตเดฐเดฟเดเตเดเต เดตเดฟเดถเดเดฒเดจเด เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเต. เดชเดคเดพเด -เดเต เดตเดฟเดถเดเดฒเดจเดคเตเดคเดฟเดจเดพเดฏเดฟ เดคเตเดฐเตเดกเตเดเดณเตเดเต เดเดฃเตเดฃเด เดธเดเตเดเดฎเดพเดเตเดเตเดจเตเดจเต, เดซเตเดฒเดพเดเต -เดเตฝ เดฒเตเดธเตปเดธเต, เดซเตเดฒเดพเดเต เดเดจเตเดจเดฟเดต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต -เด เดฒเตเดเตเดเตพ เดเดเตเดเตเดชเตเดเตเดเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดซเดฏเดฒเตเด เดซเตเดฒเดพเดเตเด เดจเดฟเตผเดตเดเดฟเดเตเดเตเดจเตเดจเต -เดกเดฟเดธเตเดฌเดฟเตพ เดฒเตเดธเตปเดธเต เดเดเตโเดธเตโเดชเดฑเตเดทเตป เดเตเดเตเดเต เดธเตเดตเดคเดตเตเดฏเตเดณเตเดณเดคเดฟเดจเดพเตฝ เดเตเดฐเดฏเตฝ เดชเดคเดฟเดชเตเดชเตเดเตพเดเตเดเต เดเดตเดถเตเดฏเดฎเดพเดฃเต pvs-studio-analyzer เดฒเตเดธเตปเดธเต เดเดพเดฒเดนเดฐเดฃเดชเตเดชเตเดเดพเตป เดชเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดเดชเดฏเตเดเตเดคเดพเดตเดฟเดจเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต เดจเตฝเดเตเด. เดเดคเต เดธเดเดญเดตเดฟเดเตเดเตเดจเตเดจเดคเต เดคเดเดฏเดพเตป, เดจเดฟเดเตเดเตพเดเตเดเต เด เดซเตเดฒเดพเดเต เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดพเด.
เดฒเตเดเต เดซเดฏเดฒเดฟเตฝ เดฑเต เดเดเตเดเตเดชเตเดเตเดเต เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เด เดคเต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด เดเตเดฏเตเดฏเดพเดคเต เดตเดพเดฏเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ, เด เดคเดฟเดจเดพเตฝ เดจเดฟเดเตเดเตพ เดเดฆเตเดฏเด เดซเดฏเตฝ เดฑเตเดกเดฌเดฟเตพ เดเดเตเดเดฃเด. เดจเดฎเตเดเตเดเต เดฒเตเดเตเดเตพ เดเดเดจเตเดจเตเดชเตเดเดพเด เดชเตเดฒเดเต-เดเตบเดตเตเตผเดเตเดเตผ, เดเดเตเดเตเดชเตเดเตเดเต เดเดฐเต html เดซเดฏเดฒเดพเดฃเต.
เด เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เดเดฎเดพเตปเดกเต เดเดชเดฏเตเดเดฟเดเตเดเต เดฎเตเดฏเดฟเตฝ เดตเดดเดฟ เดฑเดฟเดชเตเดชเตเตผเดเตเดเตเดเตพ เด เดฏเดฏเตเดเตเดเดพเตป เดเดพเตป เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต เดเดฎเตเดฏเดฟเตฝ เด เดฏเดฏเตเดเตเดเตเด.
เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดเดเตเดเตพเดเตเดเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดซเดฏเตฝ เดฒเดญเดฟเดเตเดเต .travis.sh:
#/bin/bash
travis_before_install() {
git submodule update --init --recursive
}
download_extract() {
aria2c -x 16 $1 -o $2
tar -xf $2
}
travis_install() {
if [ "$CXX" = "g++" ]; then
sudo apt-get install -qq g++-4.8
fi
if [ "$PVS_ANALYZE" = "Yes" ]; then
wget -q -O - https://files.viva64.com/etc/pubkey.txt
| sudo apt-key add -
sudo wget -O /etc/apt/sources.list.d/viva64.list
https://files.viva64.com/etc/viva64.list
sudo apt-get update -qq
sudo apt-get install -qq pvs-studio
libio-socket-ssl-perl
libnet-ssleay-perl
fi
download_extract
"https://cmake.org/files/v3.6/cmake-3.6.2-Linux-x86_64.tar.gz"
cmake-3.6.2-Linux-x86_64.tar.gz
}
travis_script() {
if [ -d cmake-3.6.2-Linux-x86_64 ]; then
export PATH=$(pwd)/cmake-3.6.2-Linux-x86_64/bin:$PATH
fi
CMAKE_ARGS="-DHEADLESS=ON ${CMAKE_ARGS}"
if [ "$PVS_ANALYZE" = "Yes" ]; then
CMAKE_ARGS="-DCMAKE_EXPORT_COMPILE_COMMANDS=On ${CMAKE_ARGS}"
fi
cmake $CMAKE_ARGS CMakeLists.txt
make
}
travis_after_success() {
if [ "$PVS_ANALYZE" = "Yes" ]; then
pvs-studio-analyzer credentials $PVS_USERNAME $PVS_KEY -o PVS-Studio.lic
pvs-studio-analyzer analyze -j2 -l PVS-Studio.lic
-o PVS-Studio-${CC}.log
--disableLicenseExpirationCheck
plog-converter -t html PVS-Studio-${CC}.log -o PVS-Studio-${CC}.html
sendemail -t [email protected]
-u "PVS-Studio $CC report, commit:$TRAVIS_COMMIT"
-m "PVS-Studio $CC report, commit:$TRAVIS_COMMIT"
-s smtp.gmail.com:587
-xu $MAIL_USER
-xp $MAIL_PASSWORD
-o tls=yes
-f $MAIL_USER
-a PVS-Studio-${CC}.log PVS-Studio-${CC}.html
fi
}
set -e
set -x
$1;
Git เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเดฒเตเดเตเดเต เดฎเดพเดฑเตเดฑเดเตเดเตพ เดตเดฐเตเดคเตเดคเดพเดจเตเดณเตเดณ เดธเดฎเดฏเดฎเดพเดฃเดฟเดคเต, เด เดคเดฟเดจเตเดถเตเดทเด เดเตเดฐเดพเดตเดฟเดธเต CI เดฌเดฟเตฝเดกเต เดธเตเดตเดฏเดฎเตเดต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเด. เดฌเดฟเตฝเดกเต เดฑเดฟเดชเตเดชเตเตผเดเตเดเตเดเดณเดฟเดฒเตเดเตเดเต เดชเตเดเดพเตป "ppsspp" เดเตเดฒเดฟเดเตเดเต เดเตเดฏเตเดฏเตเด:
เดจเดฟเดฒเดตเดฟเดฒเต เดฌเดฟเตฝเดกเดฟเดจเตเดฑเต เดเดฐเต เด
เดตเดฒเตเดเดจเด เดเดเตเดเตพ เดเดพเดฃเตเด:
เดฌเดฟเตฝเดกเต เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏเดฟ เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดเดฟเดฏเดพเตฝ, เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดเต เดตเดฟเดถเดเดฒเดจเดคเตเดคเดฟเดจเตเดฑเต เดซเดฒเดเตเดเดณเตเดณเตเดณ เดเดฐเต เดเดฎเตเดฏเดฟเตฝ เดเดเตเดเตพเดเตเดเต เดฒเดญเดฟเดเตเดเตเด. เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เดเดฐเต เดฑเดฟเดชเตเดชเตเตผเดเตเดเต เดฒเดญเดฟเดเตเดเดพเดจเตเดณเตเดณ เดเดฐเตเดฏเตเดฐเต เดฎเดพเตผเดเตเดเด เดฎเตเดฏเดฟเดฒเดฟเดเดเต เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ. เดเดคเต เดจเดเดชเตเดชเดพเดเตเดเตฝ เดฐเตเดคเดฟเดฏเตเด เดจเดฟเดเตเดเตพเดเตเดเต เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเดพเด. เดเดจเตเดจเดพเตฝ เดฌเดฟเตฝเดกเต เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดเดฟเดฏ เดถเตเดทเด, เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเตป เดซเดฏเดฒเตเดเตพ เดเดเตเดธเดธเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ เดเดจเตเดจเดคเต เดเตผเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดฃเตเดเดคเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต.
เดชเดฟเดถเดเต เดธเดเดเตเดฐเดนเด
เดเดฑเตเดฑเดตเตเด เดฌเตเดฆเตเดงเดฟเดฎเตเดเตเดเตเดณเตเดณ เดญเดพเดเด เดเดเตเดเตพ เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏเดฟ เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดเดฟ. เดเดชเตเดชเตเตพ เดจเดฎเตเดฎเตเดเต เดเดฒเตเดฒเดพ เดถเตเดฐเดฎเดเตเดเดณเตเด เดตเดฟเดฒเดฎเดคเดฟเดเตเดเตเดจเตเดจเตเดตเตเดจเตเดจเต เดเดฑเดชเตเดชเดพเดเตเดเดพเด. เดฎเตเดฏเดฟเตฝ เดตเดดเดฟ เดเดจเดฟเดเตเดเต เดตเดจเตเดจ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดเต เด เดจเดพเดฒเดฟเดธเดฟเดธเต เดฑเดฟเดชเตเดชเตเตผเดเตเดเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฐเดธเดเดฐเดฎเดพเดฏ เดเดฟเดฒ เดชเตเดฏเดฟเดจเตเดฑเตเดเตพ เดจเตเดเตเดเดพเด (เดเดพเตป เด เดคเต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเดคเต เดตเตเดฑเตเดคเตเดฏเดฒเตเดฒ).
เด เดชเดเดเดเดฐเดฎเดพเดฏ เดเดชเตเดฑเตเดฑเดฟเดฎเตเดธเตเดทเตป
void sha1( unsigned char *input, int ilen, unsigned char output[20] )
{
sha1_context ctx;
sha1_starts( &ctx );
sha1_update( &ctx, input, ilen );
sha1_finish( &ctx, output );
memset( &ctx, 0, sizeof( sha1_context ) );
}
PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
เด เดเตเดกเดฟเดจเตเดฑเต เดญเดพเดเด เดธเตเดฐเดเตเดทเดฟเดคเดฎเดพเดฏ เดนเดพเดทเดฟเดเดเต เดฎเตเดกเตเดฏเตเดณเดฟเดฒเดพเดฃเต เดธเตเดฅเดฟเดคเดฟ เดเตเดฏเตเดฏเตเดจเตเดจเดคเต, เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เด
เดคเดฟเตฝ เดเตเดฐเตเดคเดฐเดฎเดพเดฏ เดเดฐเต เดธเตเดฐเดเตเดทเดพ เดชเดฟเดดเดตเต เด
เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต (
; Line 355
mov r8d, 20
xor edx, edx
lea rcx, QWORD PTR sum$[rsp]
call memset
; Line 356
เดเดฒเตเดฒเดพเด เดเตเดฐเดฎเดคเตเดคเดฟเดฒเตเด เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดฒเตเดฎเดพเดฃเต เดฎเตเดเดธเตเดฑเตเดฑเต เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเดชเตเดชเตเดเตเดจเตเดจเต, เด เดคเตเดตเดดเดฟ เดชเตเดฐเดงเดพเดจเดชเตเดชเตเดเตเด เดกเดพเดฑเตเดฑ เดฑเดพเดฎเดฟเตฝ เดชเตเดจเดฐเดพเดฒเตเดเดจเด เดเตเดฏเตเดฏเตเดจเตเดจเต, เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเดคเตเดตเดฐเต เดธเดจเตเดคเตเดทเดฟเดเตเดเดฐเตเดคเต. เดเดชเตเดฑเตเดฑเดฟเดฎเตเดธเตเดทเดจเตเดเตเดเตเดเดฟเดฏ เดฑเดฟเดฒเตเดธเต เดชเดคเดฟเดชเตเดชเดฟเดจเตเดฑเต เด เดธเดเดฌเตเดฒเดฟ เดฒเดฟเดธเตเดฑเตเดฑเดฟเดเดเต เดจเตเดเตเดเดพเด:
; 354 :
; 355 : memset( sum, 0, sizeof( sum ) );
; 356 :}
เดฒเดฟเดธเตเดฑเตเดฑเดฟเดเดเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดพเดฃเดพเตป เดเดดเดฟเดฏเตเดจเตเดจเดคเตเดชเตเดฒเต, เดเดเดชเตเดฒเตผ เดเตเตพ เด
เดตเดเดฃเดฟเดเตเดเต เดฎเตเดเดธเตเดฑเตเดฑเต. เดเดคเต เดเดเดเตเดเดฟเตฝ เดตเดธเตเดคเตเดค เดเดพเดฐเดฃเด sha1 เดเตเดณเดฟเดจเต เดถเตเดทเด เดฎเตเดเดธเตเดฑเตเดฑเต เดเดเดจเดฏเตเดเตเดเตเดฑเดฟเดเตเดเต เดเตเดเตเดคเตฝ เดชเดฐเดพเดฎเตผเดถเดฎเดฟเดฒเตเดฒ ctx. เด
เดคเดฟเดจเดพเตฝ, เดญเดพเดตเดฟเดฏเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเดพเดคเตเดค เดฎเตเดฎเตเดฎเดฑเดฟ เดเดตเตผเดฑเตเดฑเตเดฑเดฟเดเดเต เดชเตเดฐเตเดธเดธเตเดธเตผ เดธเดฎเดฏเด เดชเดพเดดเดพเดเตเดเตเดจเตเดจเดคเดฟเตฝ เดเดเดชเตเดฒเตผ เดเดจเตเดจเตเด เดเดพเดฃเตเดจเตเดจเดฟเดฒเตเดฒ. เดซเดเดเตเดทเตป เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดเดคเต เดชเดฐเดฟเดนเดฐเดฟเดเตเดเดพเดจเดพเดเตเด RtlSecureZeroMemory เด
เดฅเดตเดพ
เดถเดฐเดฟเดฏเดพเดฃเต:
void sha1( unsigned char *input, int ilen, unsigned char output[20] )
{
sha1_context ctx;
sha1_starts( &ctx );
sha1_update( &ctx, input, ilen );
sha1_finish( &ctx, output );
RtlSecureZeroMemory(&ctx, sizeof( sha1_context ) );
}
เด เดจเดพเดตเดถเตเดฏเดฎเดพเดฏ เดคเดพเดฐเดคเดฎเตเดฏเด
static u32 sceAudioOutputPannedBlocking
(u32 chan, int leftvol, int rightvol, u32 samplePtr) {
int result = 0;
// For some reason, this is the only one that checks for negative.
if (leftvol > 0xFFFF || rightvol > 0xFFFF || leftvol < 0 || rightvol < 0) {
....
} else {
if (leftvol >= 0) {
chans[chan].leftVolume = leftvol;
}
if (rightvol >= 0) {
chans[chan].rightVolume = rightvol;
}
chans[chan].sampleAddress = samplePtr;
result = __AudioEnqueue(chans[chan], chan, true);
}
}
PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
เดเดฆเตเดฏเดคเตเดคเตเดคเดฟเดจเต เดฎเดฑเตเดฑเต เดฌเตเดฐเดพเดเตเดเดฟเดฒเตเดเตเดเต เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด if. เดเดฒเตเดฒเดพ เดตเตเดฏเดตเดธเตเดฅเดเดณเตเด เดเดฃเตเดเตเดเตเดเดฟเตฝ เดฎเดพเดคเตเดฐเดฎเต เดเตเดกเต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดเดฏเตเดณเตเดณเต leftvol > 0xFFFF || rightvol > 0xFFFF || leftvol < 0 || rightvol < 0 เดตเตเดฏเดพเดเดฎเดพเดฏเดฟ เดฎเดพเดฑเตเด. เด เดคเดฟเดจเดพเตฝ, เดเดเตเดเตพเดเตเดเต เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดชเตเดฐเดธเตเดคเดพเดตเดจเดเตพ เดฒเดญเดฟเดเตเดเตเดจเตเดจเต, เด เดคเต เดฎเดฑเตเดฑเต เดฌเตเดฐเดพเดเตเดเดฟเดจเต เดถเดฐเดฟเดฏเดพเดเตเด: leftvol <= 0xFFFF, rightvol <= 0xFFFF, leftvol >= 0 ะธ rightvol >= 0. เด เดตเดธเดพเดจเดคเตเดคเต เดฐเดฃเตเดเต เดชเตเดฐเดธเตเดคเดพเดตเดจเดเตพ เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด. เด เดเตเดกเดฟเดจเตเดฑเต เดจเดฟเตผเดตเตเดตเดนเดฃเดคเตเดคเดฟเดจเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดตเตเดฏเดตเดธเตเดฅ เดเดจเตเดคเดพเดฃเตเดจเตเดจเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเดฟเตฝ เด เตผเดคเตเดฅเดฎเตเดฃเตเดเต?
เด เดคเดฟเดจเดพเตฝ เดจเดฎเตเดเตเดเต เด เดธเตเดชเดพเดงเดฟเด เดชเตเดฐเดธเตเดคเดพเดตเดจเดเตพ เดธเตเดฐเดเตเดทเดฟเดคเดฎเดพเดฏเดฟ เดจเตเดเตเดเด เดเตเดฏเตเดฏเดพเด:
static u32 sceAudioOutputPannedBlocking
(u32 chan, int leftvol, int rightvol, u32 samplePtr) {
int result = 0;
// For some reason, this is the only one that checks for negative.
if (leftvol > 0xFFFF || rightvol > 0xFFFF || leftvol < 0 || rightvol < 0) {
....
} else {
chans[chan].leftVolume = leftvol;
chans[chan].rightVolume = rightvol;
chans[chan].sampleAddress = samplePtr;
result = __AudioEnqueue(chans[chan], chan, true);
}
}
เดฎเดฑเตเดฑเตเดฐเต เดฐเดเดเด. เด เด เดจเดพเดตเดถเตเดฏ เดตเตเดฏเดตเดธเตเดฅเดเตพเดเตเดเต เดชเดฟเดจเตเดจเดฟเตฝ เดเดฟเดฒ เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดชเดฟเดถเดเตเดเตพ เดฎเดฑเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดฐเตเดชเดเตเดทเต, เดเดจเตเดคเดพเดฃเต เดตเตเดฃเตเดเดคเตเดจเตเดจเต เด เดตเตผ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดฟเดฒเตเดฒ.
Ctrl+C Ctrl+V เดธเตเดเตเดฐเตเดเตเดเต เดฌเดพเดเตเดเต
static u32 scePsmfSetPsmf(u32 psmfStruct, u32 psmfData) {
if (!Memory::IsValidAddress(psmfData) ||
!Memory::IsValidAddress(psmfData)) {
return hleReportError(ME, SCE_KERNEL_ERROR_ILLEGAL_ADDRESS, "bad address");
}
....
}
เดเดณเตเดณเดฟเดฒเต เดเตเดเตเดเต เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด if. เดตเดฟเดฒเดพเดธเด เดธเดพเดงเตเดคเดฏเตเดณเตเดณเดคเดพเดฃเต เดเดจเตเดจเต เดเดเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดจเตเดจเดคเต เดตเดฟเดเดฟเดคเตเดฐเดฎเดพเดฏเดฟ เดคเตเดจเตเดจเตเดจเตเดจเดฟเดฒเตเดฒเต? psmfData, เดเดฐเดเตเดเดฟ? เด เดคเดฟเดจเดพเตฝ เดเดคเต เดเดจเดฟเดเตเดเต เดตเดฟเดเดฟเดคเตเดฐเดฎเดพเดฏเดฟ เดคเตเดจเตเดจเตเดจเตเดจเต... เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เดเดคเต เดคเตเตผเดเตเดเดฏเดพเดฏเตเด เดเดฐเต เด เดเตเดทเดฐเดคเตเดคเตเดฑเตเดฑเดพเดฃเต, เดฐเดฃเตเดเต เดเตปเดชเตเดเตเดเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเดณเตเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเด เดเดจเตเดจเดคเดพเดฏเดฟเดฐเตเดจเตเดจเต เดเดถเดฏเด.
เดถเดฐเดฟเดฏเดพเดฏ เดเดชเตเดทเตป:
static u32 scePsmfSetPsmf(u32 psmfStruct, u32 psmfData) {
if (!Memory::IsValidAddress(psmfStruct) ||
!Memory::IsValidAddress(psmfData)) {
return hleReportError(ME, SCE_KERNEL_ERROR_ILLEGAL_ADDRESS, "bad address");
}
....
}
เดฎเดฑเดจเตเดจเตเดชเตเดฏ เดตเตเดฐเดฟเดฏเดฌเดฟเตพ
extern void ud_translate_att(
int size = 0;
....
if (size == 8) {
ud_asmprintf(u, "b");
} else if (size == 16) {
ud_asmprintf(u, "w");
} else if (size == 64) {
ud_asmprintf(u, "q");
}
....
}
PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต:
เด เดชเดฟเดถเดเต เดซเตเตพเดกเดฑเดฟเดฒเดพเดฃเต ext, เด เดคเดฟเดจเดพเตฝ เดชเตเดฐเตเดเดเตเดฑเตเดฑเดฟเดจเต เดถเดฐเดฟเดเตเดเตเด เดชเตเดฐเดธเดเตเดคเดฎเดฒเตเดฒ, เดชเดเตเดทเต เดเดพเตป เด เดคเต เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดฌเดเต เดเดฃเตเดเตเดคเตเดคเดฟ, เด เดคเดฟเดจเดพเตฝ เดเดพเตป เด เดคเต เดเดชเตเดเตเดทเดฟเดเตเดเดพเตป เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต. เดเดฒเตเดฒเดพเดคเตเดคเดฟเดจเตเดฎเตเดชเดฐเดฟ, เด เดฒเตเดเดจเด เดชเดฟเดถเดเตเดเตพ เด เดตเดฒเตเดเดจเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเดฒเตเดฒ, เดฎเดฑเดฟเดเตเดเต เดเตเดฐเดพเดตเดฟเดธเต เดธเดฟเดเดฏเตเดฎเดพเดฏเตเดณเตเดณ เดธเดเดฏเตเดเดจเดคเตเดคเตเดเตเดเตเดฑเดฟเดเตเดเดพเดฃเต, เดเตเดเดพเดคเต เด เดจเดฒเตเดธเดฑเดฟเดจเตเดฑเต เดเตเตบเดซเดฟเดเดฑเตเดทเดจเตเดจเตเดจเตเด เดจเดเดคเตเดคเดฟเดฏเดฟเดเตเดเดฟเดฒเตเดฒ.
เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดตเดฒเตเดชเตเดชเด เดเดฐเต เดธเตเดฅเดฟเดฐเดพเดเตเดเด เดเดชเดฏเตเดเดฟเดเตเดเต เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเต, เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเดคเต เดเตเดกเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเดฟเดฒเตเดฒ, เดเดชเตเดชเดฑเตเดฑเตเดฑเตผ เดตเดฐเต if, เด เดคเต เดคเตเตผเดเตเดเดฏเดพเดฏเตเด เดจเตฝเดเตเดจเตเดจเต เดคเตเดฑเตเดฑเดพเดฏ เดตเตเดฏเดตเดธเตเดฅเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดฎเตเดชเตเตพ, เดเดพเดฐเดฃเด, เดเดเตเดเตพ เดเตผเดเตเดเตเดจเตเดจเดคเตเดชเตเดฒเต, เดตเดฒเตเดชเตเดชเด เดชเตเดเตเดฏเดคเตเดคเดฟเดจเต เดคเตเดฒเตเดฏเด. เดคเตเดเตผเดจเตเดจเตเดณเตเดณ เดชเดฐเดฟเดถเตเดงเดจเดเตพเดเตเดเตเด เด เตผเดคเตเดฅเดฎเดฟเดฒเตเดฒ.
เดชเตเดฐเดคเตเดฏเดเตเดทเดคเตเดคเดฟเตฝ, เดเตเดกเต เดถเดเดฒเดคเตเดคเดฟเดจเตเดฑเต เดฐเดเดฏเดฟเดคเดพเดตเต เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเต เดคเดฟเดฐเตเดคเตเดคเดฟเดฏเตเดดเตเดคเดพเตป เดฎเดฑเดจเตเดจเต เดตเดฒเตเดชเตเดชเด เด เดคเดฟเดจเต เดฎเตเตปเดชเต.
เดจเดฟเตผเดคเตเดคเตเด
เดเดตเดฟเดเตเดฏเดพเดฃเต เดจเดฎเตเดฎเตพ เดคเตเดฑเตเดฑเตเดเดณเดฟเตฝ เด
เดตเดธเดพเดจเดฟเดเตเดเตเดจเตเดจเดคเต. เด เดฒเตเดเดจเดคเตเดคเดฟเดจเตเดฑเต เดเดฆเตเดฆเตเดถเตเดฏเด เดเตเดฐเดพเดตเดฟเดธเต เดธเดฟเดเดฏเตเดฎเดพเดฏเดฟ เดเตเตผเดจเตเดจเต เดชเดฟเดตเดฟเดเดธเต-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเตเดฏเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด เดชเตเดฐเดเดเดฟเดชเตเดชเดฟเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต, เด
เดฒเตเดฒเดพเดคเต เดชเตเดฐเตเดเดเตเดฑเตเดฑเต เดเดดเดฟเดฏเตเดจเตเดจเดคเตเดฐ เดธเดฎเดเตเดฐเดฎเดพเดฏเดฟ เดตเดฟเดถเดเดฒเดจเด เดเตเดฏเตเดฏเตเดเดฏเดฒเตเดฒ. เดจเดฟเดเตเดเตพเดเตเดเต เดตเดฒเตเดคเตเด เดฎเดจเตเดนเดฐเดตเตเดฎเดพเดฏ เดคเตเดฑเตเดฑเตเดเตพ เดตเตเดฃเดฎเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เดเดฒเตเดฒเดพเดฏเตเดชเตเดชเตเดดเตเด เด
เดตเดฐเต เด
เดญเดฟเดจเดจเตเดฆเดฟเดเตเดเดพเด
เดคเตเดฐเตเดฎเดพเดจเด
เดชเตเดฐเตเดเดเตเดฑเตเดฑเตเดเตพ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดตเตเดฌเต เดธเตเดตเดจเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดเตปเดเตเดฐเดฟเดฎเตเดจเตเดฑเตฝ เด เดจเดพเดฒเดฟเดธเดฟเดธเต เดชเตเดฐเดพเดเตเดเตเดธเต เดเดชเดฏเตเดเดฟเดเตเดเต เดเตเดกเต เดฒเดฏเดฟเดชเตเดชเดฟเดเตเด เดเดเตป เดคเดจเตเดจเต เดจเดฟเดฐเดตเดงเดฟ เดชเตเดฐเดถเตเดจเดเตเดเตพ เดเดฃเตเดเตเดคเตเดคเดพเตป เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเดฐเต เดฌเดฟเตฝเดกเต เดฎเดคเดฟเดฏเดพเดเดฃเดฎเตเดจเตเดจเดฟเดฒเตเดฒ, เด เดคเดฟเดจเดพเตฝ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเดเต เดตเดฟเดถเดเดฒเดจเดคเตเดคเตเดเตเดชเตเดชเด เดเตเดธเตเดฑเตเดฑเดฟเดเดเต เดธเดเตเดเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเต เดเตเดกเดฟเดจเตเดฑเต เดเตเดฃเดจเดฟเดฒเดตเดพเดฐเด เดเดฃเตเดฏเดฎเดพเดฏเดฟ เดฎเตเดเตเดเดชเตเดชเตเดเตเดคเตเดคเตเด.
เดเดชเดฏเตเดเดชเตเดฐเดฆเดฎเดพเดฏ เดฒเดฟเดเตเดเตเดเตพ
Linux, macOS เดเดจเตเดจเดฟเดตเดฏเดฟเตฝ PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเต เดกเตเดเตเดเดฑเดฟเตฝ PVS-เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเต เดเตเดฐเดพเดตเดฟเดธเต เดธเดฟเด เดกเตเดเตเดฏเตเดฎเตเดจเตเดฑเตเดทเตป
เดเดเดเตเดฒเตเดทเต เดธเดเดธเดพเดฐเดฟเดเตเดเตเดจเตเดจ เดชเตเดฐเตเดเตเดทเดเดฐเตเดฎเดพเดฏเดฟ เด เดฒเตเดเดจเด เดชเดเตเดเดฟเดเดพเตป เดจเดฟเดเตเดเตพ เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเตเดตเตเดเตเดเดฟเตฝ, เดตเดฟเดตเตผเดคเตเดคเดจ เดฒเดฟเดเตเดเต เดเดชเดฏเตเดเดฟเดเตเดเตเด: Maxim Zvyagintsev.
เด
เดตเดฒเดเดฌเด: www.habr.com