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

間違ったchar*の解放を明示的に拒否する #499

Closed
3 tasks done
qryxip opened this issue May 23, 2023 · 0 comments · Fixed by #500
Closed
3 tasks done

間違ったchar*の解放を明示的に拒否する #499

qryxip opened this issue May 23, 2023 · 0 comments · Fixed by #500
Labels
OS:linux OS:mac OS:win 機能向上 要議論 実行する前に議論が必要そうなもの

Comments

@qryxip
Copy link
Member

qryxip commented May 23, 2023

内容

C APIにおいて、ユーザーに貸し出したJSONを記憶しておき、記憶されていないchar*voicevox_{audio_query,accent_phrases}_json_freeに渡されたらCStringにする前に明示的にクラッシュするようにします。

Pros 良くなる点

  • project-vvm-async-apiではAPIをvoicevox_json_freeに統一する予定であるが、それに伴う懸念(新クラス設計API #370 (comment))をだいぶ解消できる

    現状で間違ったchar*を渡した場合はUBであるため、綺麗にSEGVしてくれるとも限りません。

Cons 悪くなる点

  • コードが数行膨れる

実現方法

このBufferManagerjson_ptrs: BTreeSet<usize>みたいなのを足し、JSONの貸し出しをここからやるようにします。

/// Rustの世界の`Box<[impl Copy]>`をCの世界に貸し出すため、アドレスとレイアウトを管理するもの。
pub(crate) struct BufferManager {
address_to_layout_table: BTreeMap<usize, Layout>,
}

VOICEVOXのバージョン

N/A

OSの種類/ディストリ/バージョン

  • Windows
  • macOS
  • Linux

その他

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
OS:linux OS:mac OS:win 機能向上 要議論 実行する前に議論が必要そうなもの
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant