Bug 209588

Summary: editors/openoffice-4 editors/openoffice-devel: Fix build with libc++ 3.8.0
Product: Ports & Packages Reporter: Dimitry Andric <dim>
Component: Individual Port(s)Assignee: FreeBSD Office Team <office>
Status: Closed FIXED    
Severity: Affects Some People CC: truckman
Priority: --- Flags: bugzilla: maintainer-feedback? (office)
Version: Latest   
Hardware: Any   
OS: Any   
Bug Depends on:    
Bug Blocks: 208158    
Attachments:
Description Flags
Rename custom round() and use a define to minimize changes none

Description Dimitry Andric freebsd_committer freebsd_triage 2016-05-17 19:29:34 UTC
Created attachment 170415 [details]
Rename custom round() and use a define to minimize changes

During the exp-run in bug 208158, it was found that editors/openoffice-4 [1] and editors/openoffice-devel [2] give errors with libc++ 3.8.0:

/wrkdirs/usr/ports/editors/openoffice-4/work/aoo-4.1.2/main/vcl/source/glyphs/graphite_layout.cxx:297:21: error: call to 'round' is ambiguous
    long nXOffset = round(fMinX * fScaling);
                    ^~~~~

This is because openoffice defines its own overloaded variant of round(), which is only different in return type from the 'real' round() from <math.h>, so it is ambiguous (in the C++ lookup sense).  Fix this by renaming the custom round() to round_(), and using a define to minimize needed changes in the code.

[1] http://package18.nyi.freebsd.org/data/headamd64PR208158-default/2016-05-01_10h29m48s/logs/errors/apache-openoffice-4.1.2_5.log
[2] http://package18.nyi.freebsd.org/data/headamd64PR208158-default/2016-05-01_10h29m48s/logs/errors/apache-openoffice-devel-4.2.1735889_1,4.log
Comment 1 commit-hook freebsd_committer freebsd_triage 2016-05-26 06:02:27 UTC
A commit references this bug:

Author: truckman
Date: Thu May 26 06:01:50 UTC 2016
New revision: 415875
URL: https://svnweb.freebsd.org/changeset/ports/415875

Log:
  Fix build of openoffice-4 and openoffice-devel with libc++ 3.8.0.

  Openffice defines its own overloaded variant of round(), which is
  only different in return type from the 'real' round() from <math.h>,
  so it is ambiguous (in the C++ lookup sense).  Fix this by renaming
  the custom round() to round_(), and using a define to minimize
  needed changes in the code.

  PR:		209588
  Submitted by:	dim

Changes:
  head/editors/openoffice-4/files/patch-vcl_source_glyphs_graphite__layout.cxx
  head/editors/openoffice-devel/files/patch-vcl_source_glyphs_graphite__layout.cxx