bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: warning: "_GL_ATTRIBUTE_DEALLOC_FREE" redefined


From: Werner LEMBERG
Subject: Re: warning: "_GL_ATTRIBUTE_DEALLOC_FREE" redefined
Date: Thu, 13 Jan 2022 13:22:10 +0000 (UTC)

>>   CC       lib/libttfautohint_la-tafeature.lo
>> In file included from lib/ta.h:19:0,
>>                  from lib/tashaper.h:31,
>>                  from lib/tafeature.c:15:
>> ./config.h:842:0: warning: "_GL_ATTRIBUTE_DEALLOC_FREE" redefined
>>  #define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1)
>>
>> In file included from 
>> /usr/local/include/freetype2/freetype/config/ftstdlib.h:88:0,
>>                  from 
>> /usr/local/include/freetype2/freetype/config/ftconfig.h:41,
>>                  from /usr/local/include/freetype2/freetype/freetype.h:24,
>>                  from lib/tashaper.h:25,
>>                  from lib/tafeature.c:15:
>> ./gnulib/src/string.h:630:0: note: this is the location of the previous 
>> definition
>>  #  define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (rpl_free, 1)
>> ```
>>
>> How can I make them disappear?
>
> I believe they should go away if, as written in [1], every
> compilation unit starts with a '#include <config.h>'.

Indeed, thanks.  I now remember that I already did that for a bunch of
files some time ago, but apparently it wasn't sufficient.

Unfortunately, there are some cases where your suggestion fails.

(1) Please look at this warning message:

  ```
    CXX      frontend/ttfautohintGUI-maingui.moc.o
  In file included from ./frontend/ddlineedit.h:17:0,
                   from ./frontend/maingui.h:38,
                   from frontend/maingui.moc.cpp:10:
  ./config.h:842:0: warning: "_GL_ATTRIBUTE_DEALLOC_FREE" redefined
   #define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1)

  In file included from /usr/include/qt5/QtCore/qarraydata.h:44:0,
                   from /usr/include/qt5/QtCore/qbytearray.h:46,
                   from /usr/include/qt5/QtCore/qstring.h:49,
                   from /usr/include/qt5/QtGui/qkeysequence.h:44,
                   from /usr/include/qt5/QtWidgets/qaction.h:44,
                   from /usr/include/qt5/QtWidgets/QAction:1,
                   from ./frontend/maingui.h:19,
                   from frontend/maingui.moc.cpp:10:
  ./gnulib/src/string.h:630:0: note: this is the location of the previous 
definition
   #  define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (rpl_free, 1)
  ```

  All source code files that I can control (`maingui.moc.cpp`,
  `maingui.h`, `ddlineedit.h`) start with `#include <config.h>`.  I've
  attached file `maingui.h` for reference.


(2) The other two problematic warning messages are

  ```
    CC       lib/libttfautohint_la-tacontrol-flex.lo
  In file included from lib/ta.h:19:0,
                   from lib/tacontrol.flex:46:
  ./config.h:842:0: warning: "_GL_ATTRIBUTE_DEALLOC_FREE" redefined
   #define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1)

  In file included from lib/tacontrol-flex.c:45:0:
  ./gnulib/src/string.h:630:0: note: this is the location of the previous 
definition
   #  define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (rpl_free, 1)

    CC       lib/libttfautohint_la-tacontrol-bison.lo
  In file included from lib/tacontrol-flex.h:5:0,
                   from lib/tacontrol.bison:62:
  ./config.h:842:0: warning: "_GL_ATTRIBUTE_DEALLOC_FREE" redefined
   #define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1)

  In file included from 
/usr/local/include/freetype2/freetype/config/ftstdlib.h:88:0,
                   from 
/usr/local/include/freetype2/freetype/config/ftconfig.h:41,
                   from /usr/local/include/freetype2/freetype/freetype.h:24,
                   from lib/ta.h:22,
                   from lib/tacontrol.bison:44,
                   from lib/tacontrol-bison.c:69:
  ./gnulib/src/string.h:630:0: note: this is the location of the previous 
definition
  ```

  All source files either start with `#include <config.h>` or include
  other local header files that load `config.h` as the very first
  thing.


    Werner
// maingui.h

// Copyright (C) 2012-2022 by Werner Lemberg.
//
// This file is part of the ttfautohint library, and may only be used,
// modified, and distributed under the terms given in `COPYING'.  By
// continuing to use, modify, or distribute this file you indicate that you
// have read `COPYING' and understand and accept it fully.
//
// The file `COPYING' mentioned in the previous paragraph is distributed
// with the ttfautohint library.


#ifndef MAINGUI_H_
#define MAINGUI_H_

#include <config.h>

#include <QAction>
#include <QCheckBox>
#include <QComboBox>
#include <QCompleter>
#include <QDateTime>
#include <QDesktopWidget>
#include <QFileDialog>
#include <QFileSystemModel>
#include <QFileSystemWatcher>
#include <QGridLayout>
#include <QLabel>
#include <QMainWindow>
#include <QMenuBar>
#include <QMessageBox>
#include <QProgressDialog>
#include <QPushButton>
#include <QSpinBox>
#include <QStatusBar>

#include "ddlineedit.h"
#include "ttlineedit.h"

#include <stdio.h>
#include <ttfautohint.h>
#include <numberset.h>

class QAction;
class QButtonGroup;
class QCheckBox;
class QComboBox;
class QFile;
class QLabel;
class QLocale;
class QMenu;
class QPushButton;
class QSpinBox;

class Drag_Drop_Line_Edit;
class Tooltip_Line_Edit;

class Main_GUI
: public QMainWindow
{
  Q_OBJECT

public:
  Main_GUI(bool,
           int, int, int,
           int, int,
           int, int,
           const char*, int,
           bool, bool, bool,
           bool, bool, bool,
           const char*, const char*, bool,
           const char*, bool, bool, bool);
  ~Main_GUI();

protected:
  void closeEvent(QCloseEvent*);

private slots:
  void about();
  void browse_input();
  void browse_output();
  void browse_control();
  void browse_reference();
  void check_min();
  void check_max();
  void check_limit();
  void check_dehint();
  void check_no_limit();
  void check_no_x_increase();
  void check_default_stem_width();
  void absolute_input();
  void absolute_output();
  void absolute_control();
  void absolute_reference();
  void set_ref_idx_box_max();
  void check_number_set();
  void check_family_suffix();
  void clear_status_bar();
  void start_timer();
  void check_watch();
  void watch_files();
  void check_run();
  void run();

private:
  int hinting_range_min;
  int hinting_range_max;
  int hinting_limit;
  int gray_stem_width_mode;
  int gdi_cleartype_stem_width_mode;
  int dw_cleartype_stem_width_mode;
  int increase_x_height;
  QString x_height_snapping_exceptions_string;
  number_range* x_height_snapping_exceptions;
  int fallback_stem_width;
  int ignore_restrictions;
  int windows_compatibility;
  int adjust_subglyphs;
  int hint_composites;
  int no_info;
  int detailed_info;
  int default_script_idx;
  int fallback_script_idx;
  int fallback_scaling;
  QString family_suffix;
  int reference_index;
  int symbol;
  int dehint;
  int TTFA_info;

  const int fallback_do_scale;
  const int fallback_do_hint;

  int latn_script_idx;
  int none_script_idx;

  void create_layout(bool);
  void create_horizontal_layout();
  void create_vertical_layout();

  enum CheckState {
    DoCheck,
    CheckNow,
    CheckLater
  };

  QFileSystemWatcher* file_watcher;
  QTimer* timer;
  QFileInfo fileinfo_input_file;
  QFileInfo fileinfo_control_file;
  QFileInfo fileinfo_reference_file;
  QDateTime datetime_input_file;
  QDateTime datetime_control_file;
  QDateTime datetime_reference_file;
  CheckState check;

  void create_connections();
  void create_actions();
  void create_menus();
  void create_status_bar();
  void set_defaults();
  void read_settings();
  void write_settings();

  int check_filenames(const QString&,
                      const QString&,
                      const QString&,
                      const QString&);
  int open_files(const QString&, FILE**,
                 const QString&, FILE**,
                 const QString&, FILE**,
                 const QString&, FILE**);
  int handle_error(TA_Error, const unsigned char*, QString);

  void stop_watching();

  QMenu* file_menu;
  QMenu* help_menu;

  QLabel* input_label;
  Drag_Drop_Line_Edit* input_line;
  QPushButton* input_button;

  QLabel* output_label;
  Drag_Drop_Line_Edit* output_line;
  QPushButton* output_button;

  QLabel* control_label;
  Drag_Drop_Line_Edit* control_line;
  QPushButton* control_button;

  QLabel* reference_label;
  Drag_Drop_Line_Edit* reference_line;
  QPushButton* reference_button;

  QLabel* ref_idx_label;
  QSpinBox* ref_idx_box;

  QLabel* min_label;
  QSpinBox* min_box;
  QLabel* max_label;
  QSpinBox* max_box;

  QLabel* stem_label;

  QLabel* gray_label;
  QComboBox* gray_box;
  QLabel* gdi_label;
  QComboBox* gdi_box;
  QLabel* dw_label;
  QComboBox* dw_box;

  QLabel* default_label;
  QComboBox* default_box;
  QLabel* fallback_label;
  QComboBox* fallback_box;
  QComboBox* fallback_hint_or_scale_box;

  QLabel* limit_label;
  QString limit_label_text_with_key;
  QString limit_label_text;
  QSpinBox* limit_box;
  QCheckBox* no_limit_box;
  QString no_limit_box_text_with_key;
  QString no_limit_box_text;

  QLabel* x_increase_label;
  QString x_increase_label_text_with_key;
  QString x_increase_label_text;
  QSpinBox* x_increase_box;
  QCheckBox* no_x_increase_box;
  QString no_x_increase_box_text_with_key;
  QString no_x_increase_box_text;

  QLabel* snapping_label;
  Tooltip_Line_Edit* snapping_line;
  QLabel* family_suffix_label;
  Tooltip_Line_Edit* family_suffix_line;

  QLabel* stem_width_label;
  QString stem_width_label_text_with_key;
  QString stem_width_label_text;
  QSpinBox* stem_width_box;
  QCheckBox* default_stem_width_box;
  QString default_stem_width_box_text_with_key;
  QString default_stem_width_box_text;

  QCheckBox* wincomp_box;
  QCheckBox* adjust_box;
  QCheckBox* hint_box;
  QCheckBox* symbol_box;
  QCheckBox* dehint_box;
  QLabel* info_label;
  QComboBox* info_box;
  QCheckBox* TTFA_box;

  QCheckBox* watch_box;
  QPushButton* run_button;

  QAction* exit_act;
  QAction* about_act;
  QAction* about_Qt_act;

  QLocale* locale;
};

#endif // MAINGUI_H_

// end of maingui.h

reply via email to

[Prev in Thread] Current Thread [Next in Thread]