Renesas Community
Renesas Community
  • User
    Join or sign in
  • Site
  • Search Community
  • User
  • Renesas Engineering Community
  • FAQ
  • HELP
  • More
  • Cancel
がじぇっとるねさすコミュニティ
がじぇっとるねさすコミュニティ
IDE for GR フォーラム WString.cppに記載の toupper関数ばぐ?
  • Forums
  • Files
  • がじぇっとるねさす ゆーざー会 - Wiki
  • Tags
  • More
  • Cancel
  • New

 

 GR-SAKURA

 GR-KURUMI

 GR-COTTON

 GR-CITRUS

 GR-PEACH

 GR-KAEDE

 GR-ADZUKI

 GR-LYCHEE

 GR-ROSE

 GR-MANGO(*)

 SNShield

 Web Compiler

 IDE for GR

 TOPPERS関連

 女子美コラボ

 その他

 ※プロデューサミーティング中

 作り方使い方資料

 イベント関連

 作品記事

 体験記事

 その他

 

 ライブラリ

 ツール

 その他・過去ファイル

  • Replies 10 replies
  • Subscribers 281 subscribers
  • Views 12694 views
  • Users 0 members are here
Options
  • Share
  • More
  • Cancel
Related Tags
  • GR-ADZUKI
  • gr-citrus
  • GR-LYCHEE
  • GR-PEAC
  • gr-sakura
  • I2c
  • IDE for GR
  • mac
  • MP3
Related

WString.cppに記載の toupper関数ばぐ?

kawakawa
kawakawa over 5 years ago

PCはmac、ボードはGR-COTTONです
/Applications/IDE4GR.app/Contents/Java/hardware/arduino/rl78g13

のWString.cppに記載してあるchar toupper(char c)関数がバグっているかもしれません

(String::toUpperCaseから呼ばれている)

toUpperCaseの結果がおかしいので

{'a', 'b', 'c', 'd', 'e', 'f'}に対してWString.cppに記載してあるtoupperを呼び出してみたところ

¿ À Á Â Ã Ä

とそれぞれ変換されました。

下記がWString.cppに記載してあるコードになります(バグっているようには見えないのですが、、、、)

char toupper(char c) {
  if (c >= 'a' && c <= 'z') {
    return (c - 'a' - 'A');
  } else {
    return c;
  }
}

ちなみに、(恐らく)ctype.hのtoupperであれば正常な結果になります

 

  • Reply
  • Cancel
  • Cancel
  • kawakawa
    kawakawa over 5 years ago
    (補足)

    >ちなみに、(恐らく)ctype.hの、、、

    の(恐らく)は、ctype.hに書かれているかどうかが「恐らく」という意味です。
    WString.cppではないtoupperは正常な結果になりました。という意味です。
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • fujita nozomu
    fujita nozomu over 5 years ago
    下記がWString.cppに記載してあるコードになります(バグっているようには見えないのですが、、、、)
    char toupper(char c) {
      if (c >= 'a' && c <= 'z') {
        return (c - 'a' - 'A');
      } else {
        return c;
      }
    }
    

    下記でないとおかしい感じですね。

    char toupper(char c) {
      if (c >= 'a' && c <= 'z') {
        return (c - 'a' + 'A');
      } else {
        return c;
      }
    }
    
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • kawakawa
    kawakawa over 5 years ago in reply to fujita nozomu
    なるほど (c - ('a' - 'A'))  つまりかっこ展開して(c - 'a' + 'A')
    とすべきですね!
    中の方、ご修正お願いします!
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • kawakawa
    kawakawa over 5 years ago in reply to kawakawa
    ついでにWStringが結構古いArduinoベースなので最近のメソッドと差異があるので出来れば新しくしてほしいです
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • Okamiya Yuuki
    Okamiya Yuuki over 5 years ago in reply to kawakawa
    kawakawaさん、Fujitaさん、
    ご指摘ありがとうございます。他のライブラリファイルもなるべく新しいArduinoベースにしようと思います。V-upは9月中に行いたいと思います。
    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • NoMaY
    NoMaY over 5 years ago in reply to Okamiya Yuuki

    こんにちは。NoMaYです。突然失礼します。

    ところで、GR-KURUMI/GR-COTTONのEEPROMライブラリはルネサス製のソース非公開のバイナリ形式ライブラリを使用しているので、うかつにArduinoからLGPLの最新のEEPROMライブラリのコードを持ってくるとGPL違反になっちゃいますよね?(現状は、いわゆるクリーンルーム方式みたいなやり方で、インターフェイスだけ合わせて中身はフルスクラッチしたルネサスオリジナルコードだと思いますので、GPL違反にならないのだろうと思っていますが、、、)

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • fujita nozomu
    fujita nozomu over 5 years ago in reply to NoMaY

    > ところで、GR-KURUMI/GR-COTTONのEEPROMライブラリはルネサス製のソース非公開のバイナリ形式ライブラリを使用しているので、うかつにArduinoからLGPLの最新のEEPROMライブラリのコードを持ってくるとGPL違反になっちゃいますよね?

    GPL 違反になるのは GPL/LGPL のライブラリとルネサス製 EEPROM ライブラリをリンクし作成したバイナリを公開/販売等をした場合では?

    > うかつにArduinoからLGPLの最新のEEPROMライブラリのコードを持ってくると

    こゝ↑は絶対的な条件ではないと思います。

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • NoMaY
    NoMaY over 5 years ago in reply to fujita nozomu

    そうでした、そうでした。定番中の定番のGPL違反の早トチリというか突っ込みどころでしたね。

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • NoMaY
    NoMaY over 5 years ago in reply to NoMaY

    こういうことですね。(元のスレッドの内容からの脱線が大きくなってしまって申し訳ありません。)

    現状:
    →GPLのコードをリンクしていなければEEPROMライブラリをリンクしたバイナリを配布してもGPL/LGPL違反にならない

    もしもArduinoから最新のEEPROMライブラリのコードを持ってきてEEPROMライブラリを新しくしてしまうと:
    →GPLのコードをリンクしていなくてもEEPROMライブラリをリンクしたバイナリを配布することはLGPL違反になる

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
  • fujita nozomu
    fujita nozomu over 5 years ago in reply to NoMaY
    • GPL/LGPL のライブラリを静的にリンクしたバイナリは解析を禁止できません。
    • GR-KURUMI 等に提供されている データ・フラッシュ・メモリアクセスのライブラリ pfdl.a は出自が不明であり使用条件が明記されていません。

    以上の話と関係あるかは不明ですが、例えばルネサスさんが公開されている『データフラッシュライブラリ Type04』に添付されている ソフトウェアのご使用条件.pdf にある 

    4.禁止事項
    (1)お客様は、本プログラムのうちオブジェクトコード形式で提供された部分につき、リバースアセンブル、リバースコンパイル、リバースエンジニアリング、改変等をすることはできません。

    こういった使用条件とは GPL/LGPL は相容れない可能性はあります。

    • Cancel
    • Up 0 Down
    • Reply
    • Cancel
サイト使用条件
プライバシーポリシー
お問い合わせ
© 2010-2022 Renesas Electronics Corporation. All rights reserved.